Summary: This document provides a synthesis of initial demographic outcomes of the release of 551 captively bred Española tortoises on the island of Santa Fe in the Galapagos archipelago. I summarize the results from three separate analyses on the (1) growth, (2) survival, and (3) dispersal of these tortoises from 2015 to 2020.

A juvenile Española tortoise on Santa Fe Island.

A juvenile Española tortoise on Santa Fe Island.

I’ll also examine potential impacts of tortoises on the Santa Fe land iguana population, the only major (extant) native herbivore on Santa Fe, as well as the endemic cactus population.

Growth


Tortoise morphology—Santa Fe

First I’ll load the tortoise data with body metrics and time intervals.

library(readxl)
# load recapture data
sf_recaps <- suppressMessages(read_excel(
  path = "data/tortoise_data_Mar_2020.xlsx",
  sheet = "Marcacion Recaptura Limpias", na = "NA",
  col_types = c("numeric", rep("text", 4), rep("numeric", 5), 
                rep("text", 4), rep("numeric", 12), rep("text", 3))))

head(sf_recaps)
## # A tibble: 6 x 29
##   `Orden original` Isla  Grupo GPS   Waypoint   Año   Mes   Día Latitud Longitud
##              <dbl> <chr> <chr> <chr> <chr>    <dbl> <dbl> <dbl>   <dbl>    <dbl>
## 1                1 Sant~ <NA>  <NA>  <NA>      2015     8    11  -0.819    -90.1
## 2                2 Sant~ <NA>  <NA>  <NA>      2015     8    13  -0.820    -90.1
## 3                3 Sant~ <NA>  <NA>  <NA>      2015     8    12  -0.819    -90.1
## 4                4 Sant~ <NA>  <NA>  <NA>      2015     8    11  -0.820    -90.1
## 5                5 Sant~ <NA>  <NA>  <NA>      2015     8    11  -0.822    -90.1
## 6                7 Sant~ <NA>  <NA>  <NA>      2015     8    11  -0.819    -90.1
## # ... with 19 more variables: `Número de PIT` <chr>, `PIT DPNG liberado` <chr>,
## #   PIT_final <chr>, `Número con Hierro` <chr>, `Largo Curvo (cm)` <dbl>,
## #   `Ancho Curvo (cm)` <dbl>, `Plastron (cm)` <dbl>, `Apertura Carapacho
## #   (cm)` <dbl>, `Peso (Kg)` <dbl>, Captura <dbl>, Recaptura <dbl>,
## #   Year_liberated <dbl>, LC_at_liberation <dbl>, Peso_at_liberation <dbl>,
## #   age_at_liberation <dbl>, age_at_recapture <dbl>, check_PIT <chr>,
## #   ...28 <chr>, Comentarios <chr>

We’ll change some column names and create some extra survey variables. I’ll clean everything in a long chunk (hidden) and create a new object for examining growth patterns.

We have some measurement errors and potential outliers in the data. We’ll label points as outliers according to a 3 * IQR rule, with quartiles specified separately along 2-cm length increments (for increments with 10 or more points).

We might have to manually label some additional measurements as outliers if they fall in an increment with a small sample size but are clearly off the length versus weight curve.

# get thresholds for extreme outliers (3 * IQR)
santafe.thresholds <- santafe.raw %>%
  mutate(lc_cat_2 = floor_any(LC_capture, 2)) %>%
  group_by(lc_cat_2) %>%
  summarise(Q3 = quantile(Peso_capture, 0.75, na.rm = T),
            Q1 = quantile(Peso_capture, 0.25, na.rm = T),
            IQR = Q3-Q1,
            upper = Q3+3*IQR,
            lower = Q1-3*IQR,
            n = n()) %>% ungroup()

# identify points beyond outlier thresholds
santafe.outliers <- santafe.raw %>%
  mutate(lc_cat_2 = floor_any(LC_capture, 2)) %>%
  left_join(santafe.thresholds, by = "lc_cat_2") %>%
  filter(Peso_capture > upper & n >= 10 | Peso_capture < lower & n >= 10 |
           Peso_capture > 1 & LC_capture < 20)

# number of Santa Fe outliers
nrow(santafe.outliers)
## [1] 71
ggplot(santafe.raw, aes(x = LC_capture, y = Peso_capture)) + 
  geom_point(alpha = 0.3, shape = 16) + 
  geom_point(data = santafe.outliers, aes(x = LC_capture, y = Peso_capture), 
             colour="red", fill = "red", shape = 16) + 
  theme_classic() + mythemes

Let’s omit those 71 outliers before modeling growth.

santafe.clean <- santafe.raw[santafe.raw$unique_id %notin% 
                               santafe.outliers$unique_id,]
santafe.clean$PIT_final <- as.factor(santafe.clean$PIT_final)

Here I’ll model the simple relationship between body size (LC) and age using generalized additive models (GAMs), with a random effect for tortoise ID (PIT tag). This will allow us to look at overall growth patterns, while also accounting for the variation in individual growth rates.

library(mgcv)
gam.larga <- bam(LC_capture ~ s(Age_actual) + s(PIT_final, bs = "re"), 
                 data = santafe.clean)
summary(gam.larga)
## 
## Family: gaussian 
## Link function: identity 
## 
## Formula:
## LC_capture ~ s(Age_actual) + s(PIT_final, bs = "re")
## 
## Parametric coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  32.2969     0.1784     181   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Approximate significance of smooth terms:
##                   edf  Ref.df       F p-value    
## s(Age_actual)   6.399   7.496 6412.70  <2e-16 ***
## s(PIT_final)  539.585 550.000   49.26  <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## R-sq.(adj) =  0.977   Deviance explained = 98.3%
## fREML = 4220.7  Scale est. = 1.0414    n = 2143


library(tidymv)
length.plot.sf <- plot_smooths(model = gam.larga, series = Age_actual) + 
  geom_point(data = santafe.clean, 
             mapping = aes(x = Age_actual, y = LC_capture), 
             alpha = 0.1, shape = 16) + 
  geom_line(size = 0.5, col = "black") + 
  labs(y = "Curved carapace length (cm)", x = "Age (years)") + 
  scale_x_continuous(limits = c(4,14), breaks = c(4:14)) +
  theme_classic() + mythemes

length.plot.sf

Let’s do the same for tortoise weight.

gam.peso <- bam(Peso_capture ~ s(Age_actual) + s(PIT_final, bs="re"), 
                data = santafe.clean)
summary(gam.peso)
## 
## Family: gaussian 
## Link function: identity 
## 
## Formula:
## Peso_capture ~ s(Age_actual) + s(PIT_final, bs = "re")
## 
## Parametric coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  3.79166    0.07167    52.9   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Approximate significance of smooth terms:
##                   edf  Ref.df       F p-value    
## s(Age_actual)   8.564   8.918 1400.53  <2e-16 ***
## s(PIT_final)  499.411 550.000   10.51  <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## R-sq.(adj) =  0.917   Deviance explained = 93.7%
## fREML = 3429.5  Scale est. = 0.80616   n = 2077

Let’s plot out the predicted relationship.

weight.plot.sf <- plot_smooths(model = gam.peso, series = Age_actual) + 
  geom_point(data = santafe.clean, 
             aes(x = Age_actual, y = Peso_capture), alpha = 0.1, shape = 16) + 
  geom_line(size = 0.5, col = "black") + labs(y = "Weight (kg)", x = "Age") + 
  scale_x_continuous(limits = c(4,14), breaks = c(4:14)) +
  theme_classic() + mythemes

weight.plot.sf

It is important to remember that we have a very small sample of individuals captured at 14 years old, (n = 5). It is unlikely that the tortoises on Santa Fe are shrinking as they get old. But it seems that some tortoises have remained small and experienced limited growth for their age.

Let’s put changes in length and weight on the same plot.

library(ggpubr)
ggarrange(length.plot.sf, weight.plot.sf, nrow = 2, common.legend = TRUE, 
          legend = "right",
          labels = c("Deviance explained = 98.3% \n \      R2-adj = 0.98", 
                     "Deviance explained = 93.7% \n \      R2-adj = 0.92"), 
          hjust = -0.3)

Body condition

What if we relate length and weight with each other (e.g., body condition)?

gam.largavpeso.sf <- bam(Peso_capture ~ s(LC_capture) + s(PIT_final, bs="re"), 
                         data = santafe.clean)
summary(gam.largavpeso.sf)
## 
## Family: gaussian 
## Link function: identity 
## 
## Formula:
## Peso_capture ~ s(LC_capture) + s(PIT_final, bs = "re")
## 
## Parametric coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  3.83472    0.01275   300.7   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Approximate significance of smooth terms:
##                  edf Ref.df        F p-value    
## s(LC_capture)  7.735   8.57 6938.122  <2e-16 ***
## s(PIT_final)  28.648 550.00    0.056   0.178    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## R-sq.(adj) =  0.967   Deviance explained = 96.8%
## fREML =   1788  Scale est. = 0.31742   n = 2077
largavpeso.sf.plot <-  
  plot_smooths(model = gam.largavpeso.sf, series = LC_capture) + 
  geom_point(data = santafe.clean, 
             mapping = aes(x = LC_capture, y = Peso_capture, fill = Cohort,
                           color = Cohort, shape = Cohort), 
             position = "jitter", alpha = 0.7) + 
  geom_line(size = 0.5, col = "black") +
  labs(y = "Weight (kg)", x = "Curved carapace length (cm)") + 
  scale_shape_manual(values = c(21, 22, 24)) +
  scale_color_manual(values = c("indianred4", "dodgerblue4", "goldenrod")) +
  scale_fill_manual(values = c("indianred4", "dodgerblue4", "goldenrod")) + 
  theme(legend.position = "top") + theme_classic() + mythemes

largavpeso.sf.plot

It doesn’t look like there is any between-cohort variation in body condition. All cohorts are evenly distributed along the fitted body condition curve.

We can confirm this by summarizing residual patterns. Let’s inspect a few things:

  • Residuals by release cohort
  • Residuals by elapsed time-since-release
  • Residuals by time
body.res <-
  santafe.clean %>%
  filter(!is.na(LC_capture) & !is.na(Peso_capture)) %>%
  mutate(resid = gam.largavpeso.sf$residuals) %>%
  mutate(time_since_release = date_capture - date_firstmeasure,
         Cohort2 = as.factor(case_when(Cohort == "2015" ~ "Cohort 1",
                                       Cohort == "2017" ~ "Cohort 2",
                                       Cohort == "2019" ~ "Cohort 3")),
         release = ifelse(time_since_release == 0 | time_since_release == 77, 
                          "release", "recapture"),
         time_occ = case_when(Occasion == "1" ~ mean(dec.date[Occasion == "1"]),
                              Occasion == "2" ~ mean(dec.date[Occasion == "2"]),
                              Occasion == "3" ~ mean(dec.date[Occasion == "3"]),
                              Occasion == "4" ~ mean(dec.date[Occasion == "4"]),
                              Occasion == "5" ~ mean(dec.date[Occasion == "5"]),
                              Occasion == "6" ~ mean(dec.date[Occasion == "6"]),
                              Occasion == "7" ~ mean(dec.date[Occasion == "7"]),
                              Occasion == "8" ~ mean(dec.date[Occasion == "8"]),
                              Occasion == "9" ~ mean(dec.date[Occasion == "9"]),
                              Occasion == "10" ~ mean(dec.date[Occasion == "10"]
                                                      )))
                              
ggplot(body.res, aes(x = Cohort2, y = resid)) +
  stat_summary(fun.data = "mean_cl_normal",  geom = "pointrange") +
  geom_hline(aes(yintercept = 0), lty = "dashed") +
  ylab("Body condition residual") + xlab("Cohort") +
  theme_classic() + mythemes

ggplot(body.res, aes(x = time_since_release, y = resid)) +
  facet_wrap(~Cohort2, nrow = 3) +
  geom_smooth(method = "lm") +
  geom_point(shape = 16, alpha = 0.05) +
  geom_hline(aes(yintercept = 0), lty = "dashed") +
  ylab("Body condition residual") + xlab("Days since release") +
  theme_classic() + mythemes

body.res %>%
  group_by(time_occ, Cohort2) %>%
  summarise(resid = mean(resid)) %>%
  ggplot() +    
  geom_hline(aes(yintercept = 0), lty = "dashed", alpha = 0.4) +
  geom_point(data = body.res, aes(x = time_occ, y = resid), 
             shape = 16, alpha = 0.1, col = "grey50", position = "jitter") +
  geom_point(aes(x = time_occ, y = resid), color = "red", shape = "-", size = 6) +
  facet_wrap(~Cohort2, nrow = 3) + 
  ylab("Body condition residual") + xlab("Capture date") +
  theme_classic() + mythemes -> bc.res.plot

bc.res.plot

There don’t appear to be any differences in body condition between release cohorts. There also don’t appear to be any strong trends in body condition over time, except for a recent uptick (heavier) in the last year.

Tortoise morphology—Española

espanola.data <- read.csv("data/espanola_tortoise_data.csv")

# add unique id column
espanola.data$unique_id <- c(1:nrow(espanola.data))

Let’s first examine the data for potential outliers as we did before with the Santa Fe tortoises. We’ll constrain our Española data to be within the same age range of our Santa Fe tortoises. We’ll also omit data from 1980 to 1991 for comparing body condition, as the weight measurements during those years were filled with measurement or data entry errors that cannot be resolved.

espanola.raw <- 
  espanola.data[espanola.data$Year %notin% c(1980:1991) &
                  espanola.data$Age_capture >= min(santafe.clean$Age_actual) &
                  espanola.data$Age_capture <= max(santafe.clean$Age_actual),]

espanola.thresholds <- espanola.raw %>%
  mutate(lc_cat_2 = floor_any(LC_capture, 2)) %>%
  group_by(lc_cat_2) %>%
  summarise(Q3 = quantile(Peso_capture, 0.75, na.rm = T),
            Q1 = quantile(Peso_capture, 0.25, na.rm = T),
            IQR = Q3-Q1,
            upper = Q3+3*IQR,
            lower = Q1-3*IQR,
            n = n()) %>% ungroup()

espanola.outliers <- espanola.raw %>%
  mutate(lc_cat_2 = floor_any(LC_capture, 2)) %>%
  left_join(espanola.thresholds, by = "lc_cat_2") %>%
  filter(Peso_capture > upper & n >= 10 | Peso_capture < lower & n <= 10)

nrow(espanola.outliers)
## [1] 27
ggplot(espanola.raw, aes(x = LC_capture, y = Peso_capture)) + 
  geom_point(alpha = 0.3, shape = 16) +
  geom_point(data = espanola.outliers, aes(x=LC_capture, y = Peso_capture), 
             colour="red", fill = "red", shape = 16) + xlim(c(15,70)) +
  theme_classic() + mythemes

There are 27 obvious outliers here that we’ll remove.

espanola.clean <- 
  espanola.data[espanola.data$unique_id %notin% espanola.outliers$unique_id &
                  espanola.data$Year %notin% c(1980:1991) &
                  espanola.data$LC_capture < 70 &
                  espanola.data$Age_capture <= max(santafe.clean$Age_actual) &
                  espanola.data$Age_capture >= min(santafe.clean$Age_actual),]

espanola.clean <- espanola.clean[!is.na(espanola.clean$Year),]

Growth GAMs

Let’s combine our cleaned Santa Fe and Española datasets to model both populations together and display the regional growth contrasts.

espanola.clean$dec.date <- 
  decimal_date(as.Date(paste(espanola.clean$Year, 
                             espanola.clean$Month, 
                             espanola.clean$Year, 
                             sep = "-"), format = "%Y-%m-%d"))
espanola.clean$Age_actual <- espanola.clean$dec.date - espanola.clean$Birth_year
espanola.clean$mod.ID <- as.factor(espanola.clean$mod.ID)
espanola.clean$PIT <- as.factor(espanola.clean$PIT)

hood.data <- data.frame(
  dec.date = c(santafe.clean$dec.date, espanola.clean$dec.date),
  LC_capture = c(santafe.clean$LC_capture, espanola.clean$LC_capture),
  Peso_capture = c(santafe.clean$Peso_capture, espanola.clean$Peso_capture),
  Age_release = c(santafe.clean$Age_release, espanola.clean$Age_release),
  Age_capture = c(santafe.clean$Age_actual, espanola.clean$Age_actual),
  ID = as.factor(c(as.character(santafe.clean$PIT_final), 
                   as.character(espanola.clean$mod.ID))),
  Island = as.factor(c(rep("Santa Fe", nrow(santafe.clean)), 
                           rep("Española", nrow(espanola.clean)))))

# make island an ordered factor for the factor smooth interactions
hood.data$Island_ord <- ordered(hood.data$Island)

# summary of body condition data captures
hood.data %>%
  group_by(ID, Island) %>%
  summarise(n_raw = n()) %>%
  group_by(Island) %>%
  summarise(tortoises = length(unique(ID)),
            n = sum(n_raw),
            min_n = min(n_raw),
            mean_n = mean(n_raw),
            max_n = max(n_raw),
            sd_n = sd(n_raw)) %>% ungroup()
## # A tibble: 2 x 7
##   Island   tortoises     n min_n mean_n max_n  sd_n
##   <fct>        <int> <int> <int>  <dbl> <int> <dbl>
## 1 Española       680  1029     1   1.51     5 0.841
## 2 Santa Fe       551  2143     1   3.89     8 1.52

Let’s first look at the change in length with age.

gam.larga.hood <- bam(LC_capture ~ Island + s(Age_capture) + 
                        s(Age_capture, by = Island_ord) + 
                        s(ID, bs = "re"), data = hood.data)

summary(gam.larga.hood)
## 
## Family: gaussian 
## Link function: identity 
## 
## Formula:
## LC_capture ~ Island + s(Age_capture) + s(Age_capture, by = Island_ord) + 
##     s(ID, bs = "re")
## 
## Parametric coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     36.4519     0.1703   214.1   <2e-16 ***
## IslandSanta Fe  -3.9214     0.2482   -15.8   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Approximate significance of smooth terms:
##                                        edf   Ref.df       F p-value    
## s(Age_capture)                       7.525    8.142 2109.92  <2e-16 ***
## s(Age_capture):Island_ordSanta Fe    6.860    7.561   51.09  <2e-16 ***
## s(ID)                             1124.533 1229.000   13.00  <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## R-sq.(adj) =  0.964   Deviance explained = 97.7%
## fREML = 7732.1  Scale est. = 2.7004    n = 3172
# predict from model to plot curves for both populations
age.sim = rep(seq(min(hood.data$Age_capture), max(hood.data$Age_capture), 
                  length.out = 30), 2)

# create sequence of islands for prediction
island.sim = c(rep("Santa Fe", 30), rep("Española", 30))

# create new data frame with model covariates for prediction
newdat = data.frame(Age_capture = age.sim, Island = island.sim, 
                    Island_ord = island.sim)

# predict
hood.larga.pred <- predict.gam(gam.larga.hood, newdata = newdat, 
                               exclude = "s(ID)", type = "response", 
                               newdata.guaranteed = TRUE, se.fit=TRUE)

# put predicted values and error in new data frame for plotting
hood.larga <- data.frame(Island = island.sim,
                         Age = age.sim,
                         Pred = hood.larga.pred$fit,
                         SE = hood.larga.pred$se.fit)

# plot
hood.larga.plot <- ggplot(hood.larga, aes(x = Age, y = Pred, color = Island, 
                              fill = Island)) + 
  geom_ribbon(aes(ymin = Pred - 1.96*SE, ymax = Pred + 1.96*SE), 
              alpha = 0.2, color = "transparent") + xlim(4,15) + 
  geom_line(size = 1) + 
  geom_point(data = hood.data, inherit.aes = FALSE,
             aes(x = Age_capture, y = LC_capture, color = Island), 
             shape = 16, alpha = 0.2) +
  scale_x_continuous(limit = c(4,15), breaks = c(4:15)) +
  scale_color_manual(values = c("indianred4", "dodgerblue4")) + 
  scale_fill_manual(values = c("indianred4", "dodgerblue4")) +
  labs(y = "Curved carapace length (cm)", x = "Age (years)") + 
  theme_classic() + mythemes +
  theme(legend.position = "bottom")

hood.larga.plot

The juvenile tortoises on Santa Fe are smaller than their counterparts on Española. This could be because they were released as older and/or smaller juveniles on Santa Fe, thus acclimating to the island ecosystem at a later developmental stage. The Santa Fe tortoises seem to catch up by age 12 though.

Body condition

Let’s model the relationship between length and weight and compare that body condition function to the Santa Fe tortoise data.

hood.bc.gam <- bam(Peso_capture ~ Island + s(LC_capture) +
                   s(LC_capture, by = Island_ord) + 
                   s(ID, bs = "re"), data = hood.data)

summary(hood.bc.gam)
## 
## Family: gaussian 
## Link function: identity 
## 
## Formula:
## Peso_capture ~ Island + s(LC_capture) + s(LC_capture, by = Island_ord) + 
##     s(ID, bs = "re")
## 
## Parametric coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     4.53255    0.03469 130.664   <2e-16 ***
## IslandSanta Fe  0.05898    0.04221   1.397    0.162    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Approximate significance of smooth terms:
##                                        edf   Ref.df       F p-value    
## s(LC_capture)                    8.0476501    8.700 3797.69  <2e-16 ***
## s(LC_capture):Island_ordSanta Fe 3.4075998    4.195   22.77  <2e-16 ***
## s(ID)                            0.0008945 1176.000    0.00   0.576    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## R-sq.(adj) =   0.95   Deviance explained =   95%
## fREML = 4189.7  Scale est. = 0.91664   n = 3028
# create length sequence for prediction
larga.sim = c(rep(seq(min(santafe.clean$LC_capture), 
                max(santafe.clean$LC_capture), length.out = 100), 2))

# create sequence of islands for prediction
island.sim = c(rep("Santa Fe", 100), rep("Española", 100))

# create new data frame with model covariates for prediction
newdat = data.frame(LC_capture = larga.sim, Island_ord = island.sim, 
                    Island = island.sim)

# predict
hood.bc.pred <- predict.gam(hood.bc.gam, newdata = newdat,
                            exclude = "s(ID)", newdata.guaranteed = TRUE, 
                            type = "response", se.fit=TRUE)

# put predicted values and error in new data frame for plotting
hood.bc <- data.frame(cbind(island.sim), 
                      as.numeric(as.character(larga.sim)), 
                      as.numeric(as.character(hood.bc.pred$fit)),
                      as.numeric(as.character(hood.bc.pred$se.fit)))
colnames(hood.bc) <- c("Island", "larga", "peso", "SE")

# plot
hood.bc.plot <- ggplot(hood.bc, 
                       aes(x = larga, y = peso, color = Island, fill = Island)) + 
  geom_ribbon(aes(ymin = peso - 1.96*SE, ymax = peso + 1.96*SE), 
              color = "transparent", alpha = 0.2) +
  geom_point(inherit.aes = FALSE, 
             data = hood.data[hood.data$Island == "Santa Fe",], 
             mapping = aes(x = LC_capture, y = Peso_capture), 
             position = "jitter", shape = 16, alpha = 0.2, col = "#00BFC4") + 
  geom_point(inherit.aes = FALSE, 
             data = hood.data[hood.data$Island == "Española",], 
             mapping = aes(x = LC_capture, y = Peso_capture), 
             position = "jitter", shape = 16, alpha = 0.2, col = "#F8766D") + 
  geom_line(size = 1.1) +
  scale_color_manual(values = c("indianred4", "dodgerblue4")) + 
  scale_fill_manual(values = c("indianred4", "dodgerblue4")) +
  labs(y = "Weight (kg)", x = "Curved carapace length (cm)") + 
  theme_classic() + mythemes + theme(legend.position = "bottom") + 
  xlim(min(santafe.clean$LC_capture), max(santafe.clean$LC_capture)) + 
  ylim(c(0,22))

hood.bc.plot

It looks like the Santa Fe and Española tortoise populations are showing similar morphological patterns, despite the Santa Fe tortoises being smaller at given ages. There is a slight divergence in body condition that begins at about 40 cm, where tortoises on Santa Fe are a bit heavier for a given size than those on Española.

Let’s export our body condition model table to a csv file.

bc.model.summary <- summary(hood.bc.gam)
write.csv(bc.model.summary$p.table, "data/bc_mod_parametric.csv")
write.csv(bc.model.summary$s.table, "data/bc_mod_smooth.csv")

Let’s look at the data just one other way with box plots.

hood.data$LC_class <- as.factor(floor_any(hood.data$LC_capture, 10))

ggplot(na.omit(hood.data[hood.data$LC_class == "20" | 
                           hood.data$LC_class == "30" |
                           hood.data$LC_class == "40" | 
                           hood.data$LC_class == "50",]), 
       aes(x = LC_class, y = Peso_capture, color = Island)) +
  geom_boxplot(outlier.alpha = 0.5, outlier.shape = 16) + 
  labs(y = "Weight (kg)", x = "Curved carapace length class (cm)") +
  scale_color_manual(values = c("indianred4", "dodgerblue4")) +
  guides(color = guide_legend(title = "Island")) + 
  theme_classic() + mythemes + 
  theme(legend.position = "bottom")

These boxplots indicate that any small divergence in body condition specified by the GAM, is likely negligible.

Tortoise growth rates

Let’s now compare the actual somatic growth rates for tortoises on Santa Fe and Española, using intermediate length as a predictor.

I’ll follow a few protocols to make our Santa Fe and Española data more comparable and limit data errors: (1) I omit all growth intervals less than 1 year or greater than 5 years (the latter being the amount of time elapsed since tortoises were introduced to Santa Fe); (2) I apply some filtering rules to omit some questionable measurements that are likely products of data recording and entering errors; and (3) I truncate tabulated growth rates at negative and positive extremes of -2.5 cm / yr and 10 cm / yr.

# first get reduced data frame with:
## (1) just individuals captured at least twice, and 
## (2) containing size data
growth.input <- hood.data %>%
  filter(is.na(LC_capture) == FALSE) %>%
  group_by(Island, ID) %>%
  filter(n() > 1) %>%
  mutate(cap_date = dec.date) %>%
  arrange(cap_date) %>%
  ungroup() %>%
  mutate(unique_id = c(1:length(dec.date))) %>% 
  as.data.frame()

# function to calculate growth rates
growth.tabulate <- function(data){
  ## CLEANING LOOP
  clean_data <- NULL
  # nest by island
  for(Island in unique(data$Island)){
    # nest by tortoise ID
    for(ID in unique(data$ID[data$Island %in% Island])){
      tdata <- data[data$Island %in% Island & data$ID %in% ID,]
      final_cap = last(tdata$unique_id)
      current_cap = 1
      while(current_cap != final_cap){
        for(cap in 2:nrow(tdata)){
          current_cap = tdata$unique_id[cap]
          if(
            # If recap is too soon after the previous capture...
            tdata$cap_date[cap] - tdata$cap_date[cap-1] < 1 |
            # or shrinks
            tdata$LC_capture[cap] / tdata$LC_capture[cap-1] < 0.95 |
            # or grows quicker than 10 cm / yr
            (tdata$LC_capture[cap] - tdata$LC_capture[cap-1]) / 
            (tdata$cap_date[cap] - tdata$cap_date[cap-1]) > 10) {
            # remove cap 
            tdata <- tdata[-cap,]
            break
          }
        }
      }
      clean_data <- bind_rows(clean_data, tdata)
    }
  }
  #### CALCULATE GROWTH RATES FOR REMAINING INTERVALS ####
  growth_data <- NULL
  clean_data <- clean_data %>%
    group_by(Island, ID) %>%
    filter(n() > 1) %>% ungroup() %>%
    as.data.frame()
  # construct rows for growth dataset from clean data
  for(Island in unique(clean_data$Island)){
    # nest by tortoise ID
    for(ID in unique(clean_data$ID[clean_data$Island %in% Island])){
      tdata <- clean_data[clean_data$Island %in% Island & clean_data$ID %in% ID,]
      for(cap in 2:nrow(tdata)){
        new.df <- data.frame(
          # island
          Island = Island,
          # ID of tortoise
          ID = ID,
          # capture date
          cap_year = tdata$cap_date[cap-1],
          # recapture date
          recap_year = tdata$cap_date[cap],
          # time between captures
          years_between = tdata$cap_date[cap] - tdata$cap_date[cap-1],
          # mid-year between captures
          midyear = mean(c(tdata$cap_date[cap], tdata$cap_date[cap-1])),
          # original length
          cap_lc = tdata$LC_capture[cap-1],
          # recapture length
          recap_lc = tdata$LC_capture[cap],
          # size difference between captures
          delta_lc = tdata$LC_capture[cap] - tdata$LC_capture[cap-1],
          # mid-size between captures
          mid_lc = mean(c(tdata$LC_capture[cap], tdata$LC_capture[cap-1])),
          # mid age
          mid_age = mean(c(tdata$Age_capture[cap], tdata$Age_capture[cap-1])),
          # growth rate
          growth_cm_yr = (tdata$LC_capture[cap] - tdata$LC_capture[cap-1])/
            (tdata$cap_date[cap] - tdata$cap_date[cap-1]),
          stringsAsFactors = FALSE)
        growth_data <- bind_rows(growth_data, new.df)
      }
    }
  }
  return(growth_data)
}

# run growth function
growth.output <- growth.tabulate(growth.input)

# filter out additional growth intervals
growth.dat <- growth.output %>%
  filter(years_between <= 5) %>%
  mutate(ID = as.factor(ID),
         Island = as.factor(Island),
         growth_rate_pc = p.rank(growth_cm_yr),
         growth_rate_final = growth_cm_yr,
         growth_rate_final = ifelse(growth_cm_yr <= -2.5 | 
                                      growth_cm_yr >= 10, NA, growth_rate_final))

Let’s take a quick look at a summary of our growth dataset.

growth.dat %>%
  group_by(Island) %>%
  summarise(mean_growth = mean(growth_rate_final),
            sd_growth = sd(growth_rate_final)) -> mean.growth.rates

growth.dat %>%
  group_by(ID, Island) %>%
  summarise(n_raw = n()) %>%
  group_by(Island) %>%
  summarise(tortoises = length(unique(ID)),
            n = sum(n_raw),
            min_n = min(n_raw),
            mean_n = mean(n_raw),
            max_n = max(n_raw),
            sd_n = sd(n_raw)) %>%
  left_join(mean.growth.rates, by = "Island") %>%
  mutate(se = sd_growth/sqrt(n)) %>%
  ungroup()
## # A tibble: 2 x 10
##   Island   tortoises     n min_n mean_n max_n  sd_n mean_growth sd_growth     se
##   <fct>        <int> <int> <int>  <dbl> <int> <dbl>       <dbl>     <dbl>  <dbl>
## 1 Española       174   218     1   1.25     3 0.474        4.39      1.58 0.107 
## 2 Santa Fe       425   749     1   1.76     3 0.689        3.99      1.01 0.0370

Okay now let’s run a somatic growth model for just Santa Fe.

santafe.growth.dat <- growth.dat %>%
  filter(Island == "Santa Fe") %>%
  droplevels()

santafe.growth.gam <- bam(growth_rate_final ~ s(mid_lc) + s(ID, bs="re"), 
                          data = santafe.growth.dat)

summary(santafe.growth.gam)
## 
## Family: gaussian 
## Link function: identity 
## 
## Formula:
## growth_rate_final ~ s(mid_lc) + s(ID, bs = "re")
## 
## Parametric coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  3.98613    0.02984   133.6   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Approximate significance of smooth terms:
##                 edf  Ref.df     F p-value    
## s(mid_lc) 4.9220490   6.068 66.82  <2e-16 ***
## s(ID)     0.0001219 424.000  0.00   0.592    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## R-sq.(adj) =  0.351   Deviance explained = 35.6%
## fREML = 919.95  Scale est. = 0.66683   n = 749
larga.sim = seq(min(na.omit(santafe.growth.dat$mid_lc)), 
                max(na.omit(santafe.growth.dat$mid_lc)), length.out = 100)

# santa fe prediction
newdat <- data.frame(mid_lc = larga.sim)
santafe.pred <- predict.gam(santafe.growth.gam, newdata = newdat, 
                            exclude = "s(ID)", newdata.guaranteed = TRUE,
                            type = "response", se.fit=TRUE)
santafe.pred <- data.frame(cbind(larga.sim, santafe.pred$fit, 
                                 santafe.pred$se.fit))
colnames(santafe.pred) <- c("larga", "rate", "SE")

### PLOT ###
santafe.growth.plot <-  ggplot(santafe.pred, aes(x = larga, y = rate)) + 
  geom_point(inherit.aes = FALSE, data = santafe.growth.dat, 
             mapping = aes(x = mid_lc, y = growth_cm_yr), 
             position = "jitter", alpha = 0.1) + geom_line(size = 1.1) + 
  geom_line(aes(y=rate - 2*SE), linetype = "dashed") + 
  geom_line(aes(y=rate + 2*SE), linetype = "dashed") + 
  geom_line(mapping = aes(y = 0), linetype = "dashed", col = "black") + 
  labs(y = expression(paste("Growth rate (cm yr"^{-1},")")), 
       x = "Intermediate curved carapace length (cm)") + 
  theme_classic() + mythemes +
  scale_shape_manual(values=c(2,1)) + ylim(-2.5, 10)

santafe.growth.plot 

The Santa Fe tortoises are growing steadily.

Let’s examine the residuals over time.

santafe.cohorts <- santafe.raw %>%
  group_by(PIT_final) %>%
  summarise(ID = unique(PIT_final),
            Cohort = unique(Cohort))

growth.res <-
  santafe.growth.dat %>%
  filter(!is.na(growth_rate_final)) %>%
  mutate(resid = santafe.growth.gam$residuals) %>%
  left_join(santafe.cohorts, by = "ID") %>%
  mutate(Cohort2 = case_when(Cohort == "2015" ~ "1 (2015)",
                             Cohort == "2017" ~ "2 (2017)",
                             Cohort == "2019" ~ "3 (2019"))

growth.res.plot <- 
  ggplot(growth.res, aes(x = midyear, y = resid)) +
  geom_point(shape = 16, alpha = 0.2) +
  geom_smooth(method = "lm") + scale_y_continuous(breaks = c(-3,0,3)) +
  geom_hline(aes(yintercept = 0), lty = "dashed") +
  ylab("Growth residual") + xlab("Intermediate capture date") +
  theme_classic() + mythemes

growth.res.plot

There doesn’t appear to be any residual trend over time, indicating that growth rates are stable for the Santa Fe tortoise population.

espanola.growth.dat <- growth.dat %>%
  filter(Island == "Española") %>%
  droplevels()

espanola.growth.gam <- bam(growth_rate_final ~ s(mid_lc) + s(ID, bs="re"), 
                           data = espanola.growth.dat)

summary(espanola.growth.gam)
## 
## Family: gaussian 
## Link function: identity 
## 
## Formula:
## growth_rate_final ~ s(mid_lc) + s(ID, bs = "re")
## 
## Parametric coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  4.36640    0.09874   44.22   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Approximate significance of smooth terms:
##              edf  Ref.df      F p-value    
## s(mid_lc)  4.546   5.358 12.834 5.1e-11 ***
## s(ID)     57.058 173.000  0.512 0.00205 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## R-sq.(adj) =  0.455   Deviance explained =   61%
## fREML =  384.3  Scale est. = 1.3523    n = 218
larga.sim = seq(min(espanola.growth.dat$mid_lc), 
                max(espanola.growth.dat$mid_lc), length.out = 100)

# espanola prediction
newdat <- data.frame(mid_lc = larga.sim)
espanola.pred <- predict.gam(espanola.growth.gam, newdata = newdat, 
                             newdata.guaranteed = TRUE,
                             exclude = "s(ID)", type = "response", 
                             se.fit=TRUE)
espanola.pred <- data.frame(cbind(larga.sim, espanola.pred$fit, 
                                  espanola.pred$se.fit))
colnames(espanola.pred) <- c("larga", "rate", "SE")

### PLOT ###
espanola.growth.plot <-  ggplot(espanola.pred, aes(x = larga, y = rate)) + 
  geom_point(inherit.aes = FALSE, data = espanola.growth.dat, 
             mapping = aes(x = mid_lc, y = growth_rate_final), 
             position = "jitter", alpha = 0.2) + geom_line(size = 1.1) + 
  geom_line(aes(y=rate - 2*SE), linetype = "dashed") + 
  geom_line(aes(y=rate + 2*SE), linetype = "dashed") + 
  geom_line(mapping = aes(y = 0), linetype = "dashed", col = "black") + 
  labs(y = expression(paste("Growth rate (cm yr"^{-1},")")), 
       x = "Intermediate curved carapace length (cm)") + 
  theme_classic() + mythemes +
  scale_shape_manual(values=c(2,1)) + ylim(-2.5, 10)

espanola.growth.plot

Let’s compare Santa Fe and Española growth rates in the same model.

growth.dat$Island_ord = ordered(growth.dat$Island)

hood.growth.gam <- bam(growth_rate_final ~ Island + s(mid_lc) + 
                         s(mid_lc, by = Island_ord) + 
                         s(ID, bs="re"), data = growth.dat)

summary(hood.growth.gam)
## 
## Family: gaussian 
## Link function: identity 
## 
## Formula:
## growth_rate_final ~ Island + s(mid_lc) + s(mid_lc, by = Island_ord) + 
##     s(ID, bs = "re")
## 
## Parametric coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     4.59252    0.07545  60.866  < 2e-16 ***
## IslandSanta Fe -0.56171    0.08451  -6.647 5.19e-11 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Approximate significance of smooth terms:
##                                 edf  Ref.df      F  p-value    
## s(mid_lc)                     5.731   6.904 35.712  < 2e-16 ***
## s(mid_lc):Island_ordSanta Fe  1.000   1.000 67.647 6.26e-16 ***
## s(ID)                        60.559 597.000  0.114   0.0697 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## R-sq.(adj) =  0.358   Deviance explained = 40.3%
## fREML = 1358.7  Scale est. = 0.88667   n = 967

There is a difference in growth rates between the two populations.

Let’s export this model table to a csv.

growth.model.summary <- summary(hood.growth.gam)
write.csv(growth.model.summary$p.table, "data/growth_mod_parametric.csv")
write.csv(growth.model.summary$s.table, "data/growth_mod_smooth.csv")

Now let’s plot out the predicted growth rates for each population.

age.sim = rep(c(seq(min(na.omit(growth.dat$mid_age)), 
                max(na.omit(growth.dat$mid_age)), length.out = 100)),2)

length.sim = c(seq(min(growth.dat$mid_lc[growth.dat$Island == "Santa Fe"]), 
                max(growth.dat$mid_lc[growth.dat$Island == "Santa Fe"]), 
                length.out = 100),
              seq(min(growth.dat$mid_lc[growth.dat$Island == "Española"]), 
                max(growth.dat$mid_lc[growth.dat$Island == "Española"]), 
                length.out = 100))

newdat = data.frame(mid_lc = length.sim,
                    Island = as.factor(c(rep("Santa Fe", 100), 
                                         rep("Española", 100))),
                    Island_ord = as.factor(c(rep("Santa Fe", 100), 
                                             rep("Española", 100))))

hood.pred <- predict.gam(hood.growth.gam, newdata = newdat, 
                         newdata.guaranteed = TRUE,
                             exclude = "s(ID)", type = "response", se.fit=TRUE)
hood.pred <- data.frame(length = length.sim, 
                        Island = c(rep("Santa Fe", 100), rep("Española", 100)), 
                        rate = hood.pred$fit, 
                        SE = hood.pred$se.fit)

hood.growth.plot <- ggplot(hood.pred, 
                           aes(x = length, y = rate, 
                               fill = Island, color = Island)) + 
  geom_point(inherit.aes = FALSE, 
             data = growth.dat[growth.dat$Island == "Santa Fe",], 
             mapping = aes(x = mid_lc, y = growth_rate_final), 
             position = "jitter", shape = 16, alpha = 0.2, col = "#00BFC4") + 
  geom_point(inherit.aes = FALSE, 
             data = growth.dat[growth.dat$Island == "Española",], 
             mapping = aes(x = mid_lc, y = growth_rate_final), 
             position = "jitter", shape = 16, alpha = 0.2, col = "#F8766D") + 
  geom_ribbon(aes(ymin = rate - 1.96*SE, ymax = rate + 1.96*SE), 
              color = "transparent", alpha = 0.2) +
  geom_line(size = 1.1) + 
  scale_color_manual(values = c("indianred4", "dodgerblue4")) +
  scale_fill_manual(values = c("indianred4", "dodgerblue4")) +
  labs(y = expression(paste("Growth rate (cm yr"^{-1},")")), 
       x = "Intermediate length (cm)") + theme_classic() + mythemes +
  ylim(0, 7.5) + theme(legend.position = "bottom")

hood.growth.plot

There are in fact some differences in the growth rates between tortoises on Santa Fe and Española. The Santa Fe tortoises begin with slower growth rates than those on Española. This could possibly be explained by the harsher environment on Santa Fe. Juvenile tortoises may have more limited foraging opportunities during the day in the hot season because of there is less cover. Release ages could also play a role, as Santa Fe tortoises were on average older upon release than Española tortoises. Tortoises may require a few years to acclimate to their environment after being repatriated.

After they exceed about 40 cm in length, the Santa Fe tortoises begin to growing faster than their counterparts on Española. This would make sense, considering the greater food resources on Santa Fe. There might simply be more food for them to eat.

Of course, climate may play an important role in this contrast. The Española tortoise program spanned almost 50 years from 1975 to present. The Santa Fe program did not begin until 2015. The different time frames mean that we are capturing growth during different periods of climate variation that have unclear effects on tortoise growth.

Let’s create a composite growth figure to include in the manuscript.

growth.fig <- 
  ggarrange(hood.bc.plot, hood.growth.plot, bc.res.plot, growth.res.plot,
            nrow = 2, ncol = 2, common.legend = TRUE, legend = "top",
            labels = c("a", "b", "c", "d"), label.x = c(0.15, 0.15, 0.15, 0.15))
growth.fig

Survival


Model preparation

Here we’ll use capture-mark-recapture population models (i.e., Cormack-Jolly-Seber or CJS models) to get an estimate of survival rates of the three release cohorts of tortoises on Santa Fe.

First we need to reformat the mark-recapture data to create individual encounter histories for program MARK.

## Aggregate by tag/mark ID to create annual encounter histories
library(reshape2)
santafe.ch <- santafe.raw %>%
  dplyr::select(c("PIT_final", "Occasion", "LC_capture", "Age_actual", 
           "Age_release", "LC_release", "Peso_release", "Cohort")) %>%
  mutate(PIT = as.factor(PIT_final),
         Cohort = as.factor(Cohort)) %>%
  group_by(PIT, Occasion, Cohort) %>%
  summarise_all(mean) %>%
  dcast(PIT + Age_release + LC_release + Peso_release + Cohort ~ Occasion) %>%
  mutate_at(c(as.character(1:10)), ~ifelse(is.na(.), 0, 1))
  
colnames(santafe.ch) <- c("PIT", "age_release", "length", "weight", 
                          "release_cohort",  "T0", "T0_17", "T1", "T1_83",
                          "T2", "T3", "T3_67", "T3_84", "T4_17", "T4_75")

# aggregate encounter history and reorder columns for input to MARK
santafe.ch <- 
  data.frame(ch = paste(santafe.ch$T0, santafe.ch$T0_17, santafe.ch$T1, 
                        santafe.ch$T1_83, santafe.ch$T2, santafe.ch$T3,
                        santafe.ch$T3_67, santafe.ch$T3_84,
                        santafe.ch$T4_17, santafe.ch$T4_75, sep = ""), 
             santafe.ch[,c(2:5)])

## write as a .txt file 
write.table(santafe.ch, "data/santafe_ch.txt", sep = "\t", col.names = TRUE, 
            row.names = FALSE, quote=FALSE)

We’ll use that text file that I just exported to set up the input data.

library(RMark)
tortoises <- import.chdata("data/santafe_ch.txt", header = TRUE, 
                               field.types=c("n", "n", "n", "f")) 

effortcov <- data.frame(read.csv("data/tortoise_survey_effort.csv"))

Now we’ll process the input data for CJS. Because there were uneven time intervals between tortoise surveys we’ll have to be careful here and specify the exact amount of time between surveys for the models to estimates annual survival properly.

# make process data
tortoises$age_release <- as.factor(tortoises$age_release)
tortoises.process <- 
  process.data(tortoises,model="CJS",begin.time=0,
               time.intervals=c(0.17, 0.83, 0.83, 0.17, 
                                1.00, 0.67, 0.17, 0.33, 0.58), 
               groups = c("release_cohort", "age_release"), age.var = 2,
               initial.ages = c(4.5, 5.5, 6.5, 7.5, 8.5, 9.5, 10.5))
 
library(kableExtra)
kable(tortoises.process$data, "html", 
      caption = "Tortoise capture data in Santa Fe") %>%
  kable_styling(bootstrap_options = c("striped", "condensed")) %>% 
  scroll_box(height = "300px")
Tortoise capture data in Santa Fe
ch age_release length weight release_cohort group
1000100100 5.5 24.70000 1.450000 2015 3
1100110101 5.5 26.10000 1.800000 2015 3
1100100110 5.5 23.10000 0.800000 2015 3
1100110111 5.5 32.60000 1.000000 2015 3
1010100100 4.5 25.00000 1.100000 2015 1
1110000000 7.5 35.10000 3.700000 2015 9
1100000100 6.5 27.00000 1.600000 2015 6
1110110111 7.5 34.40000 3.800000 2015 9
1110100000 6.5 31.90000 3.200000 2015 6
1000010100 4.5 27.00000 1.600000 2015 1
1110110100 4.5 24.30000 1.250000 2015 1
1100010101 5.5 26.50000 1.700000 2015 3
1010010000 5.5 23.90000 1.200000 2015 3
1100010010 7.5 33.70000 2.400000 2015 9
1110110000 7.5 27.20000 1.400000 2015 9
1000110100 4.5 25.10000 1.300000 2015 1
1010110110 5.5 24.60000 1.400000 2015 3
1110110101 4.5 25.00000 1.250000 2015 1
1110010000 6.5 27.20000 2.700000 2015 6
1110110111 5.5 24.10000 1.200000 2015 3
1110110000 7.5 26.30000 1.200000 2015 9
1110010100 4.5 24.00000 1.250000 2015 1
1000000000 6.5 31.50000 2.800000 2015 6
1110110001 7.5 27.80000 1.700000 2015 9
1110110110 7.5 33.10000 3.300000 2015 9
1010010001 4.5 24.50000 1.200000 2015 1
1000010100 6.5 22.60000 1.100000 2015 6
1010010011 6.5 28.60000 2.000000 2015 6
1100110110 4.5 26.10000 1.500000 2015 1
1100000011 6.5 30.10000 2.300000 2015 6
1010110010 4.5 24.80000 1.300000 2015 1
1000010110 5.5 24.50000 1.150000 2015 3
1000000000 6.5 24.50000 1.300000 2015 6
1010110100 4.5 23.60000 1.200000 2015 1
1110010110 7.5 33.50000 3.200000 2015 9
1100100110 7.5 31.50000 2.500000 2015 9
1010010110 5.5 25.10000 1.150000 2015 3
1010110010 5.5 24.00000 1.300000 2015 3
1010010000 6.5 27.50000 2.100000 2015 6
1010100110 6.5 26.90000 1.700000 2015 6
1110110100 6.5 24.90000 1.400000 2015 6
1110100000 7.5 29.50000 2.400000 2015 9
1110110110 5.5 25.30000 1.500000 2015 3
1010100111 5.5 26.80000 1.700000 2015 3
1110110111 5.5 26.20000 1.400000 2015 3
1010110011 5.5 26.10000 1.500000 2015 3
1110000000 7.5 33.20000 3.100000 2015 9
0001110100 5.5 26.50000 1.750000 2017 4
1110110111 7.5 34.10000 3.600000 2015 9
1010010100 6.5 28.40000 2.400000 2015 6
1110100100 7.5 30.10000 2.300000 2015 9
1110000101 7.5 33.30000 3.300000 2015 9
1110110010 7.5 31.00000 2.700000 2015 9
1100110111 6.5 30.30000 2.600000 2015 6
1100100111 4.5 23.60000 1.300000 2015 1
1110110101 7.5 32.00000 2.800000 2015 9
1010110110 7.5 24.80000 1.300000 2015 9
1010010100 6.5 27.80000 2.000000 2015 6
1110010000 6.5 30.50000 2.700000 2015 6
1110110100 6.5 26.20000 1.500000 2015 6
1110000110 6.5 32.00000 3.050000 2015 6
1110110101 5.5 24.00000 1.200000 2015 3
1010110000 7.5 29.20000 1.900000 2015 9
1010010101 6.5 28.80000 2.250000 2015 6
1110110001 4.5 25.50000 1.300000 2015 1
1010100000 4.5 26.60000 1.600000 2015 1
1110110011 6.5 30.10000 2.400000 2015 6
1010110111 4.5 23.90000 1.200000 2015 1
1010110101 5.5 25.90000 1.600000 2015 3
1110110111 7.5 36.30000 1.200000 2015 9
1010110101 6.5 32.00000 3.000000 2015 6
1110000000 8.5 34.00000 3.500000 2015 12
1110010100 4.5 25.00000 1.200000 2015 1
1110010010 7.5 33.50000 2.800000 2015 9
1000000000 5.5 23.20000 1.000000 2015 3
1110100100 5.5 25.90000 1.650000 2015 3
1110100010 6.5 30.30000 2.750000 2015 6
1110010111 6.5 31.10000 2.750000 2015 6
1000000000 5.5 25.10000 1.100000 2015 3
1110010010 7.5 31.60000 2.700000 2015 9
1010110100 5.5 23.90000 1.200000 2015 3
1010010001 7.5 18.50000 7.000000 2015 9
1110010001 6.5 31.00000 2.700000 2015 6
1100010010 6.5 29.40000 2.500000 2015 6
1110110010 7.5 33.40000 3.300000 2015 9
1110000111 7.5 34.70000 3.700000 2015 9
1110110111 4.5 25.10000 1.400000 2015 1
1110110101 5.5 24.50000 1.300000 2015 3
0001110101 5.5 26.70000 1.611000 2017 4
1110000001 6.5 26.50000 1.800000 2015 6
1110000100 7.5 28.00000 1.800000 2015 9
1110110111 7.5 29.80000 2.300000 2015 9
1110110100 7.5 34.50000 3.700000 2015 9
1110100100 7.5 32.30000 2.600000 2015 9
1010110010 6.5 28.50000 2.300000 2015 6
1010000000 7.5 31.70000 2.700000 2015 9
1110100000 7.5 32.70000 2.700000 2015 9
0001010101 5.5 26.40000 1.669000 2017 4
1100000011 6.5 29.50000 2.100000 2015 6
1110100010 7.5 35.00000 3.900000 2015 9
1010110000 7.5 23.40000 1.300000 2015 9
1010000000 5.5 27.70000 1.900000 2015 3
1110110010 6.5 31.90000 2.950000 2015 6
1010010000 5.5 27.60000 1.850000 2015 3
1000100100 6.5 28.00000 2.100000 2015 6
1000000010 7.5 29.10000 2.100000 2015 9
1010110111 5.5 23.90000 1.200000 2015 3
1110110101 4.5 25.40000 1.500000 2015 1
1000100000 7.5 32.90000 2.800000 2015 9
1100000000 4.5 23.50000 1.150000 2015 1
1010100000 4.5 24.80000 1.300000 2015 1
1010100100 6.5 28.30000 1.850000 2015 6
1000000101 4.5 25.50000 1.550000 2015 1
1010110110 6.5 27.00000 1.700000 2015 6
1000110010 4.5 25.10000 1.500000 2015 1
1110110000 7.5 34.40000 3.900000 2015 9
1000010011 5.5 24.20000 1.300000 2015 3
1000100110 5.5 25.50000 1.600000 2015 3
1010000100 6.5 30.20000 2.150000 2015 6
1010110110 9.5 22.50000 0.950000 2015 14
0001010100 5.5 26.70000 1.634000 2017 4
1000110100 6.5 26.40000 2.800000 2015 6
1000000000 4.5 25.10000 1.450000 2015 1
1110110000 7.5 35.00000 4.300000 2015 9
1110110110 4.5 24.10000 1.200000 2015 1
1100010110 6.5 25.00000 1.400000 2015 6
1110110100 6.5 29.40000 2.400000 2015 6
1010110110 4.5 25.20000 1.400000 2015 1
1110110100 7.5 35.50000 3.500000 2015 9
1000110000 4.5 24.40000 1.250000 2015 1
1110000100 5.5 24.80000 1.050000 2015 3
1010010000 5.5 28.10000 2.200000 2015 3
1110110000 10.5 33.10000 2.800000 2015 15
1110110110 5.5 29.90000 0.900000 2015 3
0001110100 5.5 26.70000 1.521000 2017 4
1010110100 4.5 26.10000 1.500000 2015 1
1010110101 7.5 30.30000 2.400000 2015 9
1010010110 7.5 30.80000 2.700000 2015 9
1100000000 5.5 28.90000 2.200000 2015 3
1110110110 4.5 25.20000 1.500000 2015 1
1110110000 4.5 24.90000 1.500000 2015 1
1010010000 6.5 23.20000 1.100000 2015 6
1110110110 4.5 25.40000 1.450000 2015 1
1010010000 7.5 29.00000 1.800000 2015 9
1010110000 5.5 23.60000 0.900000 2015 3
1110010100 7.5 32.80000 2.300000 2015 9
1010110101 5.5 24.00000 1.200000 2015 3
1010110001 6.5 31.10000 2.750000 2015 6
1110110110 7.5 34.60000 3.600000 2015 9
1110110111 5.5 27.30000 2.000000 2015 3
1000000000 9.5 20.60000 0.800000 2015 14
1110110110 7.5 33.80000 3.200000 2015 9
1110010000 4.5 23.90000 1.000000 2015 1
1100000000 4.5 24.30000 1.200000 2015 1
1100000000 5.5 24.50000 1.300000 2015 3
1100100000 9.5 34.10000 3.400000 2015 14
1000010110 4.5 25.20000 1.250000 2015 1
1010100000 6.5 31.50000 2.900000 2015 6
1010110110 5.5 23.60000 1.300000 2015 3
1000110100 5.5 29.10000 2.000000 2015 3
1000110000 4.5 23.50000 1.100000 2015 1
1000010110 6.5 27.10000 1.950000 2015 6
1110110110 7.5 35.50000 3.050000 2015 9
1110110101 7.5 25.80000 1.500000 2015 9
1000010110 6.5 26.80000 1.700000 2015 6
1110110000 7.5 35.70000 1.700000 2015 9
1110000000 8.5 36.00000 4.800000 2015 12
1000000010 6.5 30.40000 2.600000 2015 6
1110110101 5.5 25.50000 1.500000 2015 3
1010000000 4.5 24.00000 1.200000 2015 1
1110100000 7.5 31.70000 2.800000 2015 9
1110100100 5.5 29.60000 2.250000 2015 3
1010000010 6.5 25.20000 1.300000 2015 6
1010110100 4.5 23.70000 1.050000 2015 1
1110010001 7.5 32.00000 3.300000 2015 9
1110110001 7.5 34.70000 3.500000 2015 9
1110110001 7.5 32.70000 3.000000 2015 9
1010000000 7.5 29.20000 2.200000 2015 9
1110110111 4.5 23.60000 1.100000 2015 1
1110100111 4.5 23.80000 1.300000 2015 1
1000000000 5.5 23.70000 1.050000 2015 3
1110110110 4.5 24.10000 1.200000 2015 1
1110100011 4.5 23.80000 1.200000 2015 1
1010100000 4.5 25.30000 1.300000 2015 1
1010100000 4.5 24.90000 1.550000 2015 1
1110110110 5.5 25.20000 1.500000 2015 3
1010110110 6.5 30.60000 2.800000 2015 6
1000110110 6.5 25.00000 1.300000 2015 6
1010100110 9.5 19.30000 0.600000 2015 14
1110110010 4.5 24.20000 1.300000 2015 1
1110000101 6.5 27.20000 1.700000 2015 6
1110110000 4.5 24.60000 1.400000 2015 1
1000000000 7.5 33.50000 3.000000 2015 9
1010110100 6.5 23.60000 1.150000 2015 6
1110100000 4.5 23.90000 1.250000 2015 1
1010110000 4.5 24.00000 1.100000 2015 1
1010100001 7.5 32.00000 1.900000 2015 9
1110110010 4.5 24.00000 1.150000 2015 1
1110110000 5.5 25.40000 1.600000 2015 3
1000000000 5.5 28.10000 2.050000 2015 3
0001100010 5.5 27.60000 1.842000 2017 4
1110110110 4.5 25.10000 1.400000 2015 1
1010100100 6.5 23.30000 0.750000 2015 6
1000010111 4.5 23.50000 1.000000 2015 1
1100110111 7.5 28.50000 1.800000 2015 9
1010100100 6.5 30.40000 2.300000 2015 6
1110110100 4.5 24.00000 1.200000 2015 1
1110110110 4.5 24.00000 1.200000 2015 1
0001100010 4.5 27.30000 1.999000 2017 2
0001000000 7.5 24.00000 1.200000 2017 10
0001110101 4.5 25.40000 1.400000 2017 2
0001110100 5.5 28.00000 1.839000 2017 4
0001010000 7.5 23.50000 1.100000 2017 10
0001110110 4.5 25.30000 1.400000 2017 2
0001110010 7.5 25.20000 1.700000 2017 10
0001010110 6.5 27.30000 2.000000 2017 7
0001000110 5.5 23.70000 0.991000 2017 4
0001010111 7.5 22.30000 1.000000 2017 10
0001110111 4.5 24.90000 1.200000 2017 2
0001110111 7.5 24.00000 1.200000 2017 10
0001110001 6.5 27.10000 2.000000 2017 7
0001010110 5.5 24.90000 1.305000 2017 4
0001100001 4.5 24.50000 1.270000 2017 2
0001010101 5.5 24.70000 1.329000 2017 4
0001110111 6.5 26.90000 1.700000 2017 7
0001110110 4.5 24.10000 1.190000 2017 2
0001010100 7.5 25.60000 1.400000 2017 10
0001110101 6.5 24.10000 1.200000 2017 7
0001110110 4.5 25.00000 1.300000 2017 2
0001110111 5.5 26.40000 1.554000 2017 4
0001110111 7.5 24.60000 1.400000 2017 10
0001010011 5.5 23.90000 1.230000 2017 4
0001100110 6.5 24.40000 1.400000 2017 7
0001010100 7.5 26.50000 1.700000 2017 10
0001110110 6.5 27.10000 1.700000 2017 7
0001110110 5.5 26.90000 1.823000 2017 4
0001110101 5.5 24.10000 1.242000 2017 4
0001110111 5.5 25.10000 1.534000 2017 4
0001110111 4.5 26.20000 1.500000 2017 2
0001000101 7.5 25.20000 1.500000 2017 10
0001110011 5.5 27.90000 1.530000 2017 4
1110110000 7.5 33.40000 3.200000 2015 9
0001110111 6.5 25.70000 1.400000 2017 7
0001110110 4.5 24.20000 1.200000 2017 2
0001000111 7.5 29.00000 2.200000 2017 10
0001010011 7.5 30.00000 2.500000 2017 10
0001100001 5.5 26.60000 1.635000 2017 4
0001000110 7.5 28.10000 2.100000 2017 10
0001110111 4.5 26.10000 1.370000 2017 2
0001110111 5.5 24.80000 1.175000 2017 4
0001110110 5.5 29.60000 2.354000 2017 4
0001000000 5.5 25.00000 1.196000 2017 4
0001110010 5.5 24.70000 1.261000 2017 4
0001010101 6.5 28.00000 2.100000 2017 7
0001110010 5.5 26.60000 1.744000 2017 4
0001110110 5.5 26.50000 1.742000 2017 4
0001110100 7.5 26.60000 1.600000 2017 10
0001100010 7.5 27.50000 2.000000 2017 10
0001100001 6.5 26.90000 1.600000 2017 7
0001110000 5.5 24.20000 1.391000 2017 4
0001110000 4.5 25.40000 1.400000 2017 2
0001010100 6.5 27.50000 1.900000 2017 7
0001110110 5.5 26.50000 1.524000 2017 4
0001110110 5.5 24.00000 1.162000 2017 4
0001000000 7.5 28.30000 2.000000 2017 10
0001110011 7.5 23.80000 1.100000 2017 10
0001100110 6.5 27.90000 2.200000 2017 7
0001110111 5.5 26.10000 1.647000 2017 4
0001110111 5.5 25.50000 1.393000 2017 4
0001010111 5.5 24.20000 1.085000 2017 4
0001110011 5.5 25.70000 1.487000 2017 4
0001000110 7.5 27.70000 1.100000 2017 10
0001000000 7.5 24.30000 1.200000 2017 10
0001110111 5.5 25.70000 1.343000 2017 4
0001110110 4.5 25.30000 1.300000 2017 2
0001110111 5.5 23.60000 1.504000 2017 4
0001000000 6.5 27.20000 1.900000 2017 7
0001110000 5.5 24.90000 1.196000 2017 4
0001010110 7.5 26.80000 1.800000 2017 10
0001000000 7.5 27.20000 1.800000 2017 10
0001010111 6.5 28.50000 2.200000 2017 7
0001110110 4.5 24.60000 1.200000 2017 2
0001110111 4.5 24.60000 1.200000 2017 2
0001000111 5.5 25.90000 1.367000 2017 4
0001100000 6.5 26.90000 1.800000 2017 7
0001110001 5.5 25.40000 1.407000 2017 4
0001000000 6.5 26.90000 1.800000 2017 7
0001000010 5.5 24.30000 1.270000 2017 4
0001110011 6.5 26.50000 1.600000 2017 7
1000000010 5.5 26.00000 1.550000 2015 3
0001100010 5.5 27.80000 1.879000 2017 4
0001110101 6.5 27.50000 2.000000 2017 7
0001010111 5.5 25.90000 1.537000 2017 4
0001100110 4.5 24.80000 1.250000 2017 2
0001110000 4.5 25.20000 1.300000 2017 2
0001110111 6.5 27.30000 1.800000 2017 7
0001110111 7.5 26.00000 1.500000 2017 10
0001000000 4.5 26.90000 1.800000 2017 2
0001010010 4.5 25.10000 1.310000 2017 2
0001110111 4.5 26.10000 1.600000 2017 2
0001110011 5.5 27.00000 1.718000 2017 4
0001010110 5.5 24.40000 1.051000 2017 4
0001110010 5.5 26.50000 1.603000 2017 4
0001010100 6.5 27.10000 1.300000 2017 7
0001110010 6.5 27.20000 2.000000 2017 7
0001110110 7.5 25.00000 1.500000 2017 10
0001110110 5.5 26.70000 1.643000 2017 4
0001110110 4.5 25.20000 1.200000 2017 2
0001010110 6.5 27.30000 1.200000 2017 7
0001010000 4.5 23.80000 1.100000 2017 2
0001110111 6.5 27.30000 2.000000 2017 7
0001110110 5.5 23.50000 0.972000 2017 4
0001010000 7.5 26.30000 1.500000 2017 10
0001010110 5.5 26.20000 1.653000 2017 4
0001110000 4.5 25.30000 1.500000 2017 2
0001010010 7.5 29.70000 2.200000 2017 10
0001110101 4.5 24.90000 1.300000 2017 2
0001100010 7.5 24.90000 1.500000 2017 10
0001110110 5.5 26.00000 1.443000 2017 4
0001110111 6.5 26.00000 1.600000 2017 7
0001110000 4.5 25.90000 1.400000 2017 2
0001110100 5.5 24.90000 1.139000 2017 4
0001010110 4.5 24.10000 1.200000 2017 2
0001100000 5.5 26.30000 1.479000 2017 4
0001100110 6.5 27.10000 2.000000 2017 7
0001100000 6.5 29.80000 2.400000 2017 7
0001110110 5.5 25.60000 1.377000 2017 4
0001000001 4.5 26.00000 1.600000 2017 2
0001110110 7.5 25.00000 1.200000 2017 10
0001110111 5.5 25.90000 1.529000 2017 4
0001110101 6.5 26.40000 0.900000 2017 7
0001110101 6.5 25.10000 1.400000 2017 7
0001000111 6.5 28.20000 2.100000 2017 7
0001110111 5.5 30.60000 2.593000 2017 4
0001110010 6.5 28.00000 2.200000 2017 7
0001010111 6.5 26.60000 1.600000 2017 7
0001010100 5.5 26.60000 1.489000 2017 4
0001110111 4.5 25.50000 1.400000 2017 2
0001110101 5.5 25.60000 1.326000 2017 4
0001100111 6.5 24.00000 1.400000 2017 7
0001100000 4.5 25.30000 1.200000 2017 2
0001010100 5.5 26.40000 1.384000 2017 4
0001110110 4.5 26.90000 1.500000 2017 2
0001110010 5.5 25.20000 1.265000 2017 4
0001010100 4.5 25.20000 1.400000 2017 2
0001000110 5.5 25.10000 1.427000 2017 4
0001110110 5.5 23.40000 1.027000 2017 4
0001000111 4.5 24.30000 1.220000 2017 2
0001010001 6.5 28.00000 2.000000 2017 7
0001110111 5.5 24.00000 1.153000 2017 4
0001110111 5.5 27.10000 1.889000 2017 4
0001110001 6.5 26.50000 1.600000 2017 7
0001110110 6.5 24.60000 1.300000 2017 7
0001110000 5.5 25.50000 1.578000 2017 4
0001100110 7.5 25.20000 1.600000 2017 10
0001110111 6.5 31.40000 2.900000 2017 7
0001110110 5.5 26.20000 1.695000 2017 4
0001010101 4.5 26.70000 1.600000 2017 2
0001110100 5.5 23.70000 1.217000 2017 4
0001010111 4.5 25.20000 1.500000 2017 2
0001110111 4.5 25.30000 1.500000 2017 2
0001110000 4.5 26.70000 1.600000 2017 2
0001110001 4.5 23.90000 1.200000 2017 2
0001010000 4.5 25.00000 1.300000 2017 2
0001110111 5.5 24.80000 1.196000 2017 4
0001010111 7.5 27.00000 1.200000 2017 10
0001110010 6.5 25.70000 1.550000 2017 7
0001100101 5.5 28.60000 2.111000 2017 4
0001100110 4.5 24.60000 1.300000 2017 2
0001000000 5.5 25.40000 1.251000 2017 4
0001110111 6.5 26.50000 1.800000 2017 7
0001000000 5.5 24.30000 1.624000 2017 4
0001110101 4.5 24.40000 1.200000 2017 2
0001010111 5.5 25.60000 1.480000 2017 4
0001110111 5.5 26.60000 0.984000 2017 4
0001110011 5.5 26.00000 1.668000 2017 4
0001110001 7.5 25.00000 1.300000 2017 10
0001110110 5.5 26.30000 1.453000 2017 4
0001110000 5.5 26.70000 1.608000 2017 4
0000001111 6.5 29.90000 2.586000 2019 8
0001100001 5.5 27.10000 1.781000 2017 4
0001000111 5.5 26.00000 1.462000 2017 4
0001110100 5.5 27.00000 1.780000 2017 4
0001100110 5.5 25.90000 1.488000 2017 4
0001110100 5.5 25.70000 1.383000 2017 4
0001000011 5.5 26.80000 1.849000 2017 4
0001110100 5.5 28.70000 2.095000 2017 4
0001000100 5.5 24.00000 1.257000 2017 4
0001110011 5.5 25.90000 1.633000 2017 4
0001110000 5.5 29.10000 2.200000 2017 4
0001100110 5.5 28.50000 2.067000 2017 4
0001010110 5.5 26.00000 1.587000 2017 4
0001110000 5.5 26.50000 1.584000 2017 4
0001010110 5.5 24.90000 1.277000 2017 4
0001110100 5.5 26.30000 1.702000 2017 4
1000110110 7.5 22.50000 1.000000 2015 9
0001110100 5.5 26.90000 1.614000 2017 4
0000001111 7.5 28.10000 2.082000 2019 11
0000001111 5.5 26.70000 1.481000 2019 5
0000001110 7.5 28.30000 1.980000 2019 11
0000001010 8.5 29.30000 2.206000 2019 13
0000001100 7.5 25.90000 1.489000 2019 11
0000001100 7.5 25.30000 1.281000 2019 11
0000001001 7.5 25.10000 1.380000 2019 11
0000001100 7.5 24.30000 1.323000 2019 11
0000001100 5.5 28.10000 1.853000 2019 5
0000001111 7.5 25.60000 1.442000 2019 11
0000001110 5.5 27.90000 1.682000 2019 5
0000001110 5.5 27.40000 1.641000 2019 5
0000001111 5.5 29.90000 2.226000 2019 5
0000001110 8.5 27.30000 1.602000 2019 13
0000001110 8.5 28.50000 2.129000 2019 13
0000001110 7.5 27.10000 1.676000 2019 11
0000001110 7.5 27.50000 1.637000 2019 11
0000001110 6.5 28.70000 2.038000 2019 8
0000001010 5.5 29.80000 2.753000 2019 5
0000001100 6.5 29.80000 2.314000 2019 8
0000001111 6.5 28.90000 2.392000 2019 8
0000001100 8.5 27.50000 1.636000 2019 13
0000001000 6.5 29.10000 2.231000 2019 8
0000001111 5.5 31.20000 2.388000 2019 5
0000001110 5.5 28.30000 1.888000 2019 5
0000001111 6.5 29.30000 2.144000 2019 8
0000001111 8.5 29.50000 2.218000 2019 13
0000001110 5.5 24.40000 1.134000 2019 5
0000001000 5.5 28.60000 1.976000 2019 5
0000001100 5.5 25.90000 1.592000 2019 5
0000001110 7.5 28.40000 2.806000 2019 11
0000001100 7.5 27.50000 1.672000 2019 11
0000001001 7.5 24.20000 1.239000 2019 11
0000001110 7.5 27.20000 1.715000 2019 11
0000001101 6.5 29.30000 2.243000 2019 8
0000001111 6.5 31.10000 2.870000 2019 8
0000001110 6.5 30.10000 2.537000 2019 8
0000001010 5.5 29.70000 1.894000 2019 5
0000001011 5.5 28.20000 1.810000 2019 5
0000001110 6.5 30.70000 2.545000 2019 8
0000001100 5.5 25.80000 1.527000 2019 5
0000001100 7.5 27.70000 1.866000 2019 11
0000001101 6.5 27.60000 1.997000 2019 8
0000001111 8.5 25.30000 1.328000 2019 13
0000001110 6.5 27.50000 1.835000 2019 8
0000001111 6.5 27.70112 1.884132 2019 8
0000001110 5.5 26.90000 1.614000 2019 5
0000001010 6.5 29.10000 2.299000 2019 8
0000001110 6.5 31.70000 2.955000 2019 8
0000001110 5.5 28.20000 1.808000 2019 5
0000001110 5.5 26.30000 1.473000 2019 5
0000001101 5.5 25.90000 1.257000 2019 5
0000001100 6.5 27.90000 1.661000 2019 8
0000001111 6.5 30.20000 2.591000 2019 8
0000001100 7.5 26.50000 1.800000 2019 11
0000001110 6.5 28.20000 1.829000 2019 8
0000001100 6.5 29.50000 2.309000 2019 8
0000001100 5.5 28.80000 1.832000 2019 5
0000001111 6.5 28.60000 2.221000 2019 8
0000001110 5.5 27.50000 1.654000 2019 5
0000001011 5.5 30.80000 2.328000 2019 5
0000001100 5.5 26.60000 1.714000 2019 5
0000001110 5.5 27.00000 1.537000 2019 5
0000001111 5.5 26.50000 1.480000 2019 5
0000001110 6.5 30.90000 2.768000 2019 8
0000001010 6.5 29.50000 2.227000 2019 8
0000001110 6.5 23.30000 1.043000 2019 8
0000001010 6.5 27.50000 1.864000 2019 8
0000001111 5.5 28.10000 2.003000 2019 5
0000001110 5.5 30.20000 2.399000 2019 5
0000001100 7.5 25.80000 1.466000 2019 11
0000001011 8.5 26.10000 1.498000 2019 13
0000001000 5.5 29.20000 2.097000 2019 5
0000001110 8.5 23.40000 1.089000 2019 13
0000001110 6.5 31.30000 3.006000 2019 8
0000001100 5.5 27.20000 1.694000 2019 5
0000001110 5.5 26.60000 1.331000 2019 5
0000001111 6.5 29.30000 2.182000 2019 8
0000001111 5.5 28.40000 1.941000 2019 5
0000001110 5.5 27.90000 1.793000 2019 5
0000001111 5.5 27.60000 1.709000 2019 5
0000001100 5.5 25.40000 1.266000 2019 5
0000001101 6.5 29.70000 2.366000 2019 8
0000001101 5.5 29.20000 2.186000 2019 5
0000001000 5.5 26.80000 1.518000 2019 5
0000001110 5.5 26.40000 1.494000 2019 5
0000001100 5.5 25.70000 1.520000 2019 5
0000001110 5.5 26.60000 1.729000 2019 5
0000001111 5.5 28.40000 1.872000 2019 5
0000001101 5.5 31.10000 2.588000 2019 5
0000001011 6.5 30.10000 2.624000 2019 8
0000001111 5.5 26.20000 2.053000 2019 5
0000001111 6.5 26.50000 1.762000 2019 8
0000001111 5.5 30.40000 2.400000 2019 5
0000001111 6.5 28.90000 2.002000 2019 8
0000001110 6.5 27.50000 2.088000 2019 8
0000001000 5.5 28.70000 2.017000 2019 5
0000001010 6.5 30.10000 2.502000 2019 8
0000001110 5.5 25.50000 1.216000 2019 5
0000001110 5.5 29.10000 1.967000 2019 5
0000001101 5.5 25.90000 1.455000 2019 5
0000001010 5.5 31.20000 2.707000 2019 5
0000001101 5.5 26.40000 1.561000 2019 5
0000001100 5.5 30.50000 2.442000 2019 5
0000001010 5.5 28.80000 1.741000 2019 5
0000001101 5.5 26.30000 1.672000 2019 5
0000001110 6.5 29.80000 2.298000 2019 8
0000001101 5.5 28.20000 1.707000 2019 5
0000001110 5.5 25.80000 1.432000 2019 5
0000001101 6.5 30.70000 2.724000 2019 8
0000001111 6.5 27.80000 1.979000 2019 8
0000001110 5.5 26.20000 1.432000 2019 5
0000001110 5.5 25.60000 1.334000 2019 5
0000001111 6.5 26.60000 1.602000 2019 8
0000001111 5.5 27.10000 1.476000 2019 5
0000001110 5.5 26.70000 1.473000 2019 5
0000001000 6.5 25.30000 1.342000 2019 8
0000001011 6.5 28.30000 2.055000 2019 8
0000001111 5.5 27.60000 1.769000 2019 5
0000001101 6.5 26.70000 1.739000 2019 8
0000001100 5.5 25.50000 1.257000 2019 5
0000001111 6.5 27.80000 1.982000 2019 8
0000001110 5.5 25.60000 1.371000 2019 5
0000001101 6.5 28.50000 2.138000 2019 8
0000001100 5.5 28.10000 1.675000 2019 5
0000001110 5.5 26.80000 1.649000 2019 5
0000001110 5.5 29.50000 2.209000 2019 5
0000001101 5.5 25.30000 1.251000 2019 5
0000001110 6.5 29.80000 2.289000 2019 8
0000001101 5.5 25.90000 1.543000 2019 5
0000001100 5.5 27.90000 1.673000 2019 5
0000001111 5.5 29.90000 2.180000 2019 5
0000001110 6.5 26.60000 1.668000 2019 8
0000001101 5.5 27.40000 1.996000 2019 5
0000001110 5.5 29.30000 2.033000 2019 5
0000001000 5.5 27.30000 1.602000 2019 5
0000001101 5.5 27.30000 1.693000 2019 5
0000001110 5.5 27.50000 1.805000 2019 5
0000001110 5.5 27.90000 1.966000 2019 5
0000001110 5.5 24.70000 1.203000 2019 5
0000001000 5.5 25.30000 1.325000 2019 5
0000001110 5.5 29.90000 2.265000 2019 5
0000001100 5.5 25.50000 1.396000 2019 5
0000001110 6.5 29.20000 2.203000 2019 8
0000001010 5.5 24.80000 1.237000 2019 5
0000001100 5.5 29.20000 2.046000 2019 5
0000001010 5.5 29.60000 2.160000 2019 5
0000001111 5.5 25.10000 1.293000 2019 5
0000001110 5.5 27.90000 1.865000 2019 5
0000001010 6.5 26.30000 1.739000 2019 8
0000001111 5.5 28.80000 2.071000 2019 5
0000001110 5.5 29.90000 2.206000 2019 5
0000001111 5.5 28.50000 1.921000 2019 5
0000001001 6.5 27.40000 1.829000 2019 8


Now we’ll make the design data for CJS. We have to fix two parameters–detection for the 2015 cohort of tortoises in April of 2017 and detection for the 2015 and 2017 cohorts in February of 2019. The new cohorts of tortoises were released then, but no surveys were conducted. So we need MARK to know that detection for the older cohorts in those time periods was zero.

# make CJS ddl
tortoises.ddl <- make.design.data(tortoises.process)

# merge effort data
tortoises.ddl$p <- merge_design.covariates(tortoises.ddl$p,effortcov, bytime = TRUE)

# fix detection for the 2015 cohort in occasion 4 (time 1.83) when no sampling occured
tortoises.ddl$p$fix <- NA
tortoises.ddl$p$fix[tortoises.ddl$p$time == "1.83" & 
                      tortoises.ddl$p$release_cohort == "2015"] <- 0

# fix detection for the 2015 & 2017 cohorts in occassion 7 (time 3.67) when no sampling occured
tortoises.ddl$p$fix[tortoises.ddl$p$time == "3.67" &
                      c(tortoises.ddl$p$release_cohort == "2015" |
                          tortoises.ddl$p$release_cohort == "2017")] <- 0

# design data PIMS
kable(tortoises.ddl[[1]][], "html", 
      caption = "PIMS for Phi (survival) parameter") %>% 
  kable_styling(bootstrap_options = c("striped", "condensed")) %>%
  scroll_box(height = "300px")
PIMS for Phi (survival) parameter
par.index model.index group cohort age time occ.cohort Cohort Age Time release_cohort age_release
1 1 20154.5 0 4.5 0 1 0.00 4.50 0.00 2015 4.5
2 2 20154.5 0 4.67 0.17 1 0.00 4.67 0.17 2015 4.5
3 3 20154.5 0 5.5 1 1 0.00 5.50 1.00 2015 4.5
4 4 20154.5 0 6.33 1.83 1 0.00 6.33 1.83 2015 4.5
5 5 20154.5 0 6.5 2 1 0.00 6.50 2.00 2015 4.5
6 6 20154.5 0 7.5 3 1 0.00 7.50 3.00 2015 4.5
7 7 20154.5 0 8.17 3.67 1 0.00 8.17 3.67 2015 4.5
8 8 20154.5 0 8.34 3.84 1 0.00 8.34 3.84 2015 4.5
9 9 20154.5 0 8.67 4.17 1 0.00 8.67 4.17 2015 4.5
10 10 20154.5 0.17 4.5 0.17 2 0.17 4.50 0.17 2015 4.5
11 11 20154.5 0.17 5.33 1 2 0.17 5.33 1.00 2015 4.5
12 12 20154.5 0.17 6.16 1.83 2 0.17 6.16 1.83 2015 4.5
13 13 20154.5 0.17 6.33 2 2 0.17 6.33 2.00 2015 4.5
14 14 20154.5 0.17 7.33 3 2 0.17 7.33 3.00 2015 4.5
15 15 20154.5 0.17 8 3.67 2 0.17 8.00 3.67 2015 4.5
16 16 20154.5 0.17 8.17 3.84 2 0.17 8.17 3.84 2015 4.5
17 17 20154.5 0.17 8.5 4.17 2 0.17 8.50 4.17 2015 4.5
18 18 20154.5 1 4.5 1 3 1.00 4.50 1.00 2015 4.5
19 19 20154.5 1 5.33 1.83 3 1.00 5.33 1.83 2015 4.5
20 20 20154.5 1 5.5 2 3 1.00 5.50 2.00 2015 4.5
21 21 20154.5 1 6.5 3 3 1.00 6.50 3.00 2015 4.5
22 22 20154.5 1 7.17 3.67 3 1.00 7.17 3.67 2015 4.5
23 23 20154.5 1 7.34 3.84 3 1.00 7.34 3.84 2015 4.5
24 24 20154.5 1 7.67 4.17 3 1.00 7.67 4.17 2015 4.5
25 25 20154.5 1.83 4.5 1.83 4 1.83 4.50 1.83 2015 4.5
26 26 20154.5 1.83 4.67 2 4 1.83 4.67 2.00 2015 4.5
27 27 20154.5 1.83 5.67 3 4 1.83 5.67 3.00 2015 4.5
28 28 20154.5 1.83 6.34 3.67 4 1.83 6.34 3.67 2015 4.5
29 29 20154.5 1.83 6.51 3.84 4 1.83 6.51 3.84 2015 4.5
30 30 20154.5 1.83 6.84 4.17 4 1.83 6.84 4.17 2015 4.5
31 31 20154.5 2 4.5 2 5 2.00 4.50 2.00 2015 4.5
32 32 20154.5 2 5.5 3 5 2.00 5.50 3.00 2015 4.5
33 33 20154.5 2 6.17 3.67 5 2.00 6.17 3.67 2015 4.5
34 34 20154.5 2 6.34 3.84 5 2.00 6.34 3.84 2015 4.5
35 35 20154.5 2 6.67 4.17 5 2.00 6.67 4.17 2015 4.5
36 36 20154.5 3 4.5 3 6 3.00 4.50 3.00 2015 4.5
37 37 20154.5 3 5.17 3.67 6 3.00 5.17 3.67 2015 4.5
38 38 20154.5 3 5.34 3.84 6 3.00 5.34 3.84 2015 4.5
39 39 20154.5 3 5.67 4.17 6 3.00 5.67 4.17 2015 4.5
40 40 20154.5 3.67 4.5 3.67 7 3.67 4.50 3.67 2015 4.5
41 41 20154.5 3.67 4.67 3.84 7 3.67 4.67 3.84 2015 4.5
42 42 20154.5 3.67 5 4.17 7 3.67 5.00 4.17 2015 4.5
43 43 20154.5 3.84 4.5 3.84 8 3.84 4.50 3.84 2015 4.5
44 44 20154.5 3.84 4.83 4.17 8 3.84 4.83 4.17 2015 4.5
45 45 20154.5 4.17 4.5 4.17 9 4.17 4.50 4.17 2015 4.5
46 46 20174.5 0 4.5 0 1 0.00 4.50 0.00 2017 4.5
47 47 20174.5 0 4.67 0.17 1 0.00 4.67 0.17 2017 4.5
48 48 20174.5 0 5.5 1 1 0.00 5.50 1.00 2017 4.5
49 49 20174.5 0 6.33 1.83 1 0.00 6.33 1.83 2017 4.5
50 50 20174.5 0 6.5 2 1 0.00 6.50 2.00 2017 4.5
51 51 20174.5 0 7.5 3 1 0.00 7.50 3.00 2017 4.5
52 52 20174.5 0 8.17 3.67 1 0.00 8.17 3.67 2017 4.5
53 53 20174.5 0 8.34 3.84 1 0.00 8.34 3.84 2017 4.5
54 54 20174.5 0 8.67 4.17 1 0.00 8.67 4.17 2017 4.5
55 55 20174.5 0.17 4.5 0.17 2 0.17 4.50 0.17 2017 4.5
56 56 20174.5 0.17 5.33 1 2 0.17 5.33 1.00 2017 4.5
57 57 20174.5 0.17 6.16 1.83 2 0.17 6.16 1.83 2017 4.5
58 58 20174.5 0.17 6.33 2 2 0.17 6.33 2.00 2017 4.5
59 59 20174.5 0.17 7.33 3 2 0.17 7.33 3.00 2017 4.5
60 60 20174.5 0.17 8 3.67 2 0.17 8.00 3.67 2017 4.5
61 61 20174.5 0.17 8.17 3.84 2 0.17 8.17 3.84 2017 4.5
62 62 20174.5 0.17 8.5 4.17 2 0.17 8.50 4.17 2017 4.5
63 63 20174.5 1 4.5 1 3 1.00 4.50 1.00 2017 4.5
64 64 20174.5 1 5.33 1.83 3 1.00 5.33 1.83 2017 4.5
65 65 20174.5 1 5.5 2 3 1.00 5.50 2.00 2017 4.5
66 66 20174.5 1 6.5 3 3 1.00 6.50 3.00 2017 4.5
67 67 20174.5 1 7.17 3.67 3 1.00 7.17 3.67 2017 4.5
68 68 20174.5 1 7.34 3.84 3 1.00 7.34 3.84 2017 4.5
69 69 20174.5 1 7.67 4.17 3 1.00 7.67 4.17 2017 4.5
70 70 20174.5 1.83 4.5 1.83 4 1.83 4.50 1.83 2017 4.5
71 71 20174.5 1.83 4.67 2 4 1.83 4.67 2.00 2017 4.5
72 72 20174.5 1.83 5.67 3 4 1.83 5.67 3.00 2017 4.5
73 73 20174.5 1.83 6.34 3.67 4 1.83 6.34 3.67 2017 4.5
74 74 20174.5 1.83 6.51 3.84 4 1.83 6.51 3.84 2017 4.5
75 75 20174.5 1.83 6.84 4.17 4 1.83 6.84 4.17 2017 4.5
76 76 20174.5 2 4.5 2 5 2.00 4.50 2.00 2017 4.5
77 77 20174.5 2 5.5 3 5 2.00 5.50 3.00 2017 4.5
78 78 20174.5 2 6.17 3.67 5 2.00 6.17 3.67 2017 4.5
79 79 20174.5 2 6.34 3.84 5 2.00 6.34 3.84 2017 4.5
80 80 20174.5 2 6.67 4.17 5 2.00 6.67 4.17 2017 4.5
81 81 20174.5 3 4.5 3 6 3.00 4.50 3.00 2017 4.5
82 82 20174.5 3 5.17 3.67 6 3.00 5.17 3.67 2017 4.5
83 83 20174.5 3 5.34 3.84 6 3.00 5.34 3.84 2017 4.5
84 84 20174.5 3 5.67 4.17 6 3.00 5.67 4.17 2017 4.5
85 85 20174.5 3.67 4.5 3.67 7 3.67 4.50 3.67 2017 4.5
86 86 20174.5 3.67 4.67 3.84 7 3.67 4.67 3.84 2017 4.5
87 87 20174.5 3.67 5 4.17 7 3.67 5.00 4.17 2017 4.5
88 88 20174.5 3.84 4.5 3.84 8 3.84 4.50 3.84 2017 4.5
89 89 20174.5 3.84 4.83 4.17 8 3.84 4.83 4.17 2017 4.5
90 90 20174.5 4.17 4.5 4.17 9 4.17 4.50 4.17 2017 4.5
91 91 20155.5 0 5.5 0 1 0.00 5.50 0.00 2015 5.5
92 92 20155.5 0 5.67 0.17 1 0.00 5.67 0.17 2015 5.5
93 93 20155.5 0 6.5 1 1 0.00 6.50 1.00 2015 5.5
94 94 20155.5 0 7.33 1.83 1 0.00 7.33 1.83 2015 5.5
95 95 20155.5 0 7.5 2 1 0.00 7.50 2.00 2015 5.5
96 96 20155.5 0 8.5 3 1 0.00 8.50 3.00 2015 5.5
97 97 20155.5 0 9.17 3.67 1 0.00 9.17 3.67 2015 5.5
98 98 20155.5 0 9.34 3.84 1 0.00 9.34 3.84 2015 5.5
99 99 20155.5 0 9.67 4.17 1 0.00 9.67 4.17 2015 5.5
100 100 20155.5 0.17 5.5 0.17 2 0.17 5.50 0.17 2015 5.5
101 101 20155.5 0.17 6.33 1 2 0.17 6.33 1.00 2015 5.5
102 102 20155.5 0.17 7.16 1.83 2 0.17 7.16 1.83 2015 5.5
103 103 20155.5 0.17 7.33 2 2 0.17 7.33 2.00 2015 5.5
104 104 20155.5 0.17 8.33 3 2 0.17 8.33 3.00 2015 5.5
105 105 20155.5 0.17 9 3.67 2 0.17 9.00 3.67 2015 5.5
106 106 20155.5 0.17 9.17 3.84 2 0.17 9.17 3.84 2015 5.5
107 107 20155.5 0.17 9.5 4.17 2 0.17 9.50 4.17 2015 5.5
108 108 20155.5 1 5.5 1 3 1.00 5.50 1.00 2015 5.5
109 109 20155.5 1 6.33 1.83 3 1.00 6.33 1.83 2015 5.5
110 110 20155.5 1 6.5 2 3 1.00 6.50 2.00 2015 5.5
111 111 20155.5 1 7.5 3 3 1.00 7.50 3.00 2015 5.5
112 112 20155.5 1 8.17 3.67 3 1.00 8.17 3.67 2015 5.5
113 113 20155.5 1 8.34 3.84 3 1.00 8.34 3.84 2015 5.5
114 114 20155.5 1 8.67 4.17 3 1.00 8.67 4.17 2015 5.5
115 115 20155.5 1.83 5.5 1.83 4 1.83 5.50 1.83 2015 5.5
116 116 20155.5 1.83 5.67 2 4 1.83 5.67 2.00 2015 5.5
117 117 20155.5 1.83 6.67 3 4 1.83 6.67 3.00 2015 5.5
118 118 20155.5 1.83 7.34 3.67 4 1.83 7.34 3.67 2015 5.5
119 119 20155.5 1.83 7.51 3.84 4 1.83 7.51 3.84 2015 5.5
120 120 20155.5 1.83 7.84 4.17 4 1.83 7.84 4.17 2015 5.5
121 121 20155.5 2 5.5 2 5 2.00 5.50 2.00 2015 5.5
122 122 20155.5 2 6.5 3 5 2.00 6.50 3.00 2015 5.5
123 123 20155.5 2 7.17 3.67 5 2.00 7.17 3.67 2015 5.5
124 124 20155.5 2 7.34 3.84 5 2.00 7.34 3.84 2015 5.5
125 125 20155.5 2 7.67 4.17 5 2.00 7.67 4.17 2015 5.5
126 126 20155.5 3 5.5 3 6 3.00 5.50 3.00 2015 5.5
127 127 20155.5 3 6.17 3.67 6 3.00 6.17 3.67 2015 5.5
128 128 20155.5 3 6.34 3.84 6 3.00 6.34 3.84 2015 5.5
129 129 20155.5 3 6.67 4.17 6 3.00 6.67 4.17 2015 5.5
130 130 20155.5 3.67 5.5 3.67 7 3.67 5.50 3.67 2015 5.5
131 131 20155.5 3.67 5.67 3.84 7 3.67 5.67 3.84 2015 5.5
132 132 20155.5 3.67 6 4.17 7 3.67 6.00 4.17 2015 5.5
133 133 20155.5 3.84 5.5 3.84 8 3.84 5.50 3.84 2015 5.5
134 134 20155.5 3.84 5.83 4.17 8 3.84 5.83 4.17 2015 5.5
135 135 20155.5 4.17 5.5 4.17 9 4.17 5.50 4.17 2015 5.5
136 136 20175.5 0 5.5 0 1 0.00 5.50 0.00 2017 5.5
137 137 20175.5 0 5.67 0.17 1 0.00 5.67 0.17 2017 5.5
138 138 20175.5 0 6.5 1 1 0.00 6.50 1.00 2017 5.5
139 139 20175.5 0 7.33 1.83 1 0.00 7.33 1.83 2017 5.5
140 140 20175.5 0 7.5 2 1 0.00 7.50 2.00 2017 5.5
141 141 20175.5 0 8.5 3 1 0.00 8.50 3.00 2017 5.5
142 142 20175.5 0 9.17 3.67 1 0.00 9.17 3.67 2017 5.5
143 143 20175.5 0 9.34 3.84 1 0.00 9.34 3.84 2017 5.5
144 144 20175.5 0 9.67 4.17 1 0.00 9.67 4.17 2017 5.5
145 145 20175.5 0.17 5.5 0.17 2 0.17 5.50 0.17 2017 5.5
146 146 20175.5 0.17 6.33 1 2 0.17 6.33 1.00 2017 5.5
147 147 20175.5 0.17 7.16 1.83 2 0.17 7.16 1.83 2017 5.5
148 148 20175.5 0.17 7.33 2 2 0.17 7.33 2.00 2017 5.5
149 149 20175.5 0.17 8.33 3 2 0.17 8.33 3.00 2017 5.5
150 150 20175.5 0.17 9 3.67 2 0.17 9.00 3.67 2017 5.5
151 151 20175.5 0.17 9.17 3.84 2 0.17 9.17 3.84 2017 5.5
152 152 20175.5 0.17 9.5 4.17 2 0.17 9.50 4.17 2017 5.5
153 153 20175.5 1 5.5 1 3 1.00 5.50 1.00 2017 5.5
154 154 20175.5 1 6.33 1.83 3 1.00 6.33 1.83 2017 5.5
155 155 20175.5 1 6.5 2 3 1.00 6.50 2.00 2017 5.5
156 156 20175.5 1 7.5 3 3 1.00 7.50 3.00 2017 5.5
157 157 20175.5 1 8.17 3.67 3 1.00 8.17 3.67 2017 5.5
158 158 20175.5 1 8.34 3.84 3 1.00 8.34 3.84 2017 5.5
159 159 20175.5 1 8.67 4.17 3 1.00 8.67 4.17 2017 5.5
160 160 20175.5 1.83 5.5 1.83 4 1.83 5.50 1.83 2017 5.5
161 161 20175.5 1.83 5.67 2 4 1.83 5.67 2.00 2017 5.5
162 162 20175.5 1.83 6.67 3 4 1.83 6.67 3.00 2017 5.5
163 163 20175.5 1.83 7.34 3.67 4 1.83 7.34 3.67 2017 5.5
164 164 20175.5 1.83 7.51 3.84 4 1.83 7.51 3.84 2017 5.5
165 165 20175.5 1.83 7.84 4.17 4 1.83 7.84 4.17 2017 5.5
166 166 20175.5 2 5.5 2 5 2.00 5.50 2.00 2017 5.5
167 167 20175.5 2 6.5 3 5 2.00 6.50 3.00 2017 5.5
168 168 20175.5 2 7.17 3.67 5 2.00 7.17 3.67 2017 5.5
169 169 20175.5 2 7.34 3.84 5 2.00 7.34 3.84 2017 5.5
170 170 20175.5 2 7.67 4.17 5 2.00 7.67 4.17 2017 5.5
171 171 20175.5 3 5.5 3 6 3.00 5.50 3.00 2017 5.5
172 172 20175.5 3 6.17 3.67 6 3.00 6.17 3.67 2017 5.5
173 173 20175.5 3 6.34 3.84 6 3.00 6.34 3.84 2017 5.5
174 174 20175.5 3 6.67 4.17 6 3.00 6.67 4.17 2017 5.5
175 175 20175.5 3.67 5.5 3.67 7 3.67 5.50 3.67 2017 5.5
176 176 20175.5 3.67 5.67 3.84 7 3.67 5.67 3.84 2017 5.5
177 177 20175.5 3.67 6 4.17 7 3.67 6.00 4.17 2017 5.5
178 178 20175.5 3.84 5.5 3.84 8 3.84 5.50 3.84 2017 5.5
179 179 20175.5 3.84 5.83 4.17 8 3.84 5.83 4.17 2017 5.5
180 180 20175.5 4.17 5.5 4.17 9 4.17 5.50 4.17 2017 5.5
181 181 20195.5 0 5.5 0 1 0.00 5.50 0.00 2019 5.5
182 182 20195.5 0 5.67 0.17 1 0.00 5.67 0.17 2019 5.5
183 183 20195.5 0 6.5 1 1 0.00 6.50 1.00 2019 5.5
184 184 20195.5 0 7.33 1.83 1 0.00 7.33 1.83 2019 5.5
185 185 20195.5 0 7.5 2 1 0.00 7.50 2.00 2019 5.5
186 186 20195.5 0 8.5 3 1 0.00 8.50 3.00 2019 5.5
187 187 20195.5 0 9.17 3.67 1 0.00 9.17 3.67 2019 5.5
188 188 20195.5 0 9.34 3.84 1 0.00 9.34 3.84 2019 5.5
189 189 20195.5 0 9.67 4.17 1 0.00 9.67 4.17 2019 5.5
190 190 20195.5 0.17 5.5 0.17 2 0.17 5.50 0.17 2019 5.5
191 191 20195.5 0.17 6.33 1 2 0.17 6.33 1.00 2019 5.5
192 192 20195.5 0.17 7.16 1.83 2 0.17 7.16 1.83 2019 5.5
193 193 20195.5 0.17 7.33 2 2 0.17 7.33 2.00 2019 5.5
194 194 20195.5 0.17 8.33 3 2 0.17 8.33 3.00 2019 5.5
195 195 20195.5 0.17 9 3.67 2 0.17 9.00 3.67 2019 5.5
196 196 20195.5 0.17 9.17 3.84 2 0.17 9.17 3.84 2019 5.5
197 197 20195.5 0.17 9.5 4.17 2 0.17 9.50 4.17 2019 5.5
198 198 20195.5 1 5.5 1 3 1.00 5.50 1.00 2019 5.5
199 199 20195.5 1 6.33 1.83 3 1.00 6.33 1.83 2019 5.5
200 200 20195.5 1 6.5 2 3 1.00 6.50 2.00 2019 5.5
201 201 20195.5 1 7.5 3 3 1.00 7.50 3.00 2019 5.5
202 202 20195.5 1 8.17 3.67 3 1.00 8.17 3.67 2019 5.5
203 203 20195.5 1 8.34 3.84 3 1.00 8.34 3.84 2019 5.5
204 204 20195.5 1 8.67 4.17 3 1.00 8.67 4.17 2019 5.5
205 205 20195.5 1.83 5.5 1.83 4 1.83 5.50 1.83 2019 5.5
206 206 20195.5 1.83 5.67 2 4 1.83 5.67 2.00 2019 5.5
207 207 20195.5 1.83 6.67 3 4 1.83 6.67 3.00 2019 5.5
208 208 20195.5 1.83 7.34 3.67 4 1.83 7.34 3.67 2019 5.5
209 209 20195.5 1.83 7.51 3.84 4 1.83 7.51 3.84 2019 5.5
210 210 20195.5 1.83 7.84 4.17 4 1.83 7.84 4.17 2019 5.5
211 211 20195.5 2 5.5 2 5 2.00 5.50 2.00 2019 5.5
212 212 20195.5 2 6.5 3 5 2.00 6.50 3.00 2019 5.5
213 213 20195.5 2 7.17 3.67 5 2.00 7.17 3.67 2019 5.5
214 214 20195.5 2 7.34 3.84 5 2.00 7.34 3.84 2019 5.5
215 215 20195.5 2 7.67 4.17 5 2.00 7.67 4.17 2019 5.5
216 216 20195.5 3 5.5 3 6 3.00 5.50 3.00 2019 5.5
217 217 20195.5 3 6.17 3.67 6 3.00 6.17 3.67 2019 5.5
218 218 20195.5 3 6.34 3.84 6 3.00 6.34 3.84 2019 5.5
219 219 20195.5 3 6.67 4.17 6 3.00 6.67 4.17 2019 5.5
220 220 20195.5 3.67 5.5 3.67 7 3.67 5.50 3.67 2019 5.5
221 221 20195.5 3.67 5.67 3.84 7 3.67 5.67 3.84 2019 5.5
222 222 20195.5 3.67 6 4.17 7 3.67 6.00 4.17 2019 5.5
223 223 20195.5 3.84 5.5 3.84 8 3.84 5.50 3.84 2019 5.5
224 224 20195.5 3.84 5.83 4.17 8 3.84 5.83 4.17 2019 5.5
225 225 20195.5 4.17 5.5 4.17 9 4.17 5.50 4.17 2019 5.5
226 226 20156.5 0 6.5 0 1 0.00 6.50 0.00 2015 6.5
227 227 20156.5 0 6.67 0.17 1 0.00 6.67 0.17 2015 6.5
228 228 20156.5 0 7.5 1 1 0.00 7.50 1.00 2015 6.5
229 229 20156.5 0 8.33 1.83 1 0.00 8.33 1.83 2015 6.5
230 230 20156.5 0 8.5 2 1 0.00 8.50 2.00 2015 6.5
231 231 20156.5 0 9.5 3 1 0.00 9.50 3.00 2015 6.5
232 232 20156.5 0 10.17 3.67 1 0.00 10.17 3.67 2015 6.5
233 233 20156.5 0 10.34 3.84 1 0.00 10.34 3.84 2015 6.5
234 234 20156.5 0 10.67 4.17 1 0.00 10.67 4.17 2015 6.5
235 235 20156.5 0.17 6.5 0.17 2 0.17 6.50 0.17 2015 6.5
236 236 20156.5 0.17 7.33 1 2 0.17 7.33 1.00 2015 6.5
237 237 20156.5 0.17 8.16 1.83 2 0.17 8.16 1.83 2015 6.5
238 238 20156.5 0.17 8.33 2 2 0.17 8.33 2.00 2015 6.5
239 239 20156.5 0.17 9.33 3 2 0.17 9.33 3.00 2015 6.5
240 240 20156.5 0.17 10 3.67 2 0.17 10.00 3.67 2015 6.5
241 241 20156.5 0.17 10.17 3.84 2 0.17 10.17 3.84 2015 6.5
242 242 20156.5 0.17 10.5 4.17 2 0.17 10.50 4.17 2015 6.5
243 243 20156.5 1 6.5 1 3 1.00 6.50 1.00 2015 6.5
244 244 20156.5 1 7.33 1.83 3 1.00 7.33 1.83 2015 6.5
245 245 20156.5 1 7.5 2 3 1.00 7.50 2.00 2015 6.5
246 246 20156.5 1 8.5 3 3 1.00 8.50 3.00 2015 6.5
247 247 20156.5 1 9.17 3.67 3 1.00 9.17 3.67 2015 6.5
248 248 20156.5 1 9.34 3.84 3 1.00 9.34 3.84 2015 6.5
249 249 20156.5 1 9.67 4.17 3 1.00 9.67 4.17 2015 6.5
250 250 20156.5 1.83 6.5 1.83 4 1.83 6.50 1.83 2015 6.5
251 251 20156.5 1.83 6.67 2 4 1.83 6.67 2.00 2015 6.5
252 252 20156.5 1.83 7.67 3 4 1.83 7.67 3.00 2015 6.5
253 253 20156.5 1.83 8.34 3.67 4 1.83 8.34 3.67 2015 6.5
254 254 20156.5 1.83 8.51 3.84 4 1.83 8.51 3.84 2015 6.5
255 255 20156.5 1.83 8.84 4.17 4 1.83 8.84 4.17 2015 6.5
256 256 20156.5 2 6.5 2 5 2.00 6.50 2.00 2015 6.5
257 257 20156.5 2 7.5 3 5 2.00 7.50 3.00 2015 6.5
258 258 20156.5 2 8.17 3.67 5 2.00 8.17 3.67 2015 6.5
259 259 20156.5 2 8.34 3.84 5 2.00 8.34 3.84 2015 6.5
260 260 20156.5 2 8.67 4.17 5 2.00 8.67 4.17 2015 6.5
261 261 20156.5 3 6.5 3 6 3.00 6.50 3.00 2015 6.5
262 262 20156.5 3 7.17 3.67 6 3.00 7.17 3.67 2015 6.5
263 263 20156.5 3 7.34 3.84 6 3.00 7.34 3.84 2015 6.5
264 264 20156.5 3 7.67 4.17 6 3.00 7.67 4.17 2015 6.5
265 265 20156.5 3.67 6.5 3.67 7 3.67 6.50 3.67 2015 6.5
266 266 20156.5 3.67 6.67 3.84 7 3.67 6.67 3.84 2015 6.5
267 267 20156.5 3.67 7 4.17 7 3.67 7.00 4.17 2015 6.5
268 268 20156.5 3.84 6.5 3.84 8 3.84 6.50 3.84 2015 6.5
269 269 20156.5 3.84 6.83 4.17 8 3.84 6.83 4.17 2015 6.5
270 270 20156.5 4.17 6.5 4.17 9 4.17 6.50 4.17 2015 6.5
271 271 20176.5 0 6.5 0 1 0.00 6.50 0.00 2017 6.5
272 272 20176.5 0 6.67 0.17 1 0.00 6.67 0.17 2017 6.5
273 273 20176.5 0 7.5 1 1 0.00 7.50 1.00 2017 6.5
274 274 20176.5 0 8.33 1.83 1 0.00 8.33 1.83 2017 6.5
275 275 20176.5 0 8.5 2 1 0.00 8.50 2.00 2017 6.5
276 276 20176.5 0 9.5 3 1 0.00 9.50 3.00 2017 6.5
277 277 20176.5 0 10.17 3.67 1 0.00 10.17 3.67 2017 6.5
278 278 20176.5 0 10.34 3.84 1 0.00 10.34 3.84 2017 6.5
279 279 20176.5 0 10.67 4.17 1 0.00 10.67 4.17 2017 6.5
280 280 20176.5 0.17 6.5 0.17 2 0.17 6.50 0.17 2017 6.5
281 281 20176.5 0.17 7.33 1 2 0.17 7.33 1.00 2017 6.5
282 282 20176.5 0.17 8.16 1.83 2 0.17 8.16 1.83 2017 6.5
283 283 20176.5 0.17 8.33 2 2 0.17 8.33 2.00 2017 6.5
284 284 20176.5 0.17 9.33 3 2 0.17 9.33 3.00 2017 6.5
285 285 20176.5 0.17 10 3.67 2 0.17 10.00 3.67 2017 6.5
286 286 20176.5 0.17 10.17 3.84 2 0.17 10.17 3.84 2017 6.5
287 287 20176.5 0.17 10.5 4.17 2 0.17 10.50 4.17 2017 6.5
288 288 20176.5 1 6.5 1 3 1.00 6.50 1.00 2017 6.5
289 289 20176.5 1 7.33 1.83 3 1.00 7.33 1.83 2017 6.5
290 290 20176.5 1 7.5 2 3 1.00 7.50 2.00 2017 6.5
291 291 20176.5 1 8.5 3 3 1.00 8.50 3.00 2017 6.5
292 292 20176.5 1 9.17 3.67 3 1.00 9.17 3.67 2017 6.5
293 293 20176.5 1 9.34 3.84 3 1.00 9.34 3.84 2017 6.5
294 294 20176.5 1 9.67 4.17 3 1.00 9.67 4.17 2017 6.5
295 295 20176.5 1.83 6.5 1.83 4 1.83 6.50 1.83 2017 6.5
296 296 20176.5 1.83 6.67 2 4 1.83 6.67 2.00 2017 6.5
297 297 20176.5 1.83 7.67 3 4 1.83 7.67 3.00 2017 6.5
298 298 20176.5 1.83 8.34 3.67 4 1.83 8.34 3.67 2017 6.5
299 299 20176.5 1.83 8.51 3.84 4 1.83 8.51 3.84 2017 6.5
300 300 20176.5 1.83 8.84 4.17 4 1.83 8.84 4.17 2017 6.5
301 301 20176.5 2 6.5 2 5 2.00 6.50 2.00 2017 6.5
302 302 20176.5 2 7.5 3 5 2.00 7.50 3.00 2017 6.5
303 303 20176.5 2 8.17 3.67 5 2.00 8.17 3.67 2017 6.5
304 304 20176.5 2 8.34 3.84 5 2.00 8.34 3.84 2017 6.5
305 305 20176.5 2 8.67 4.17 5 2.00 8.67 4.17 2017 6.5
306 306 20176.5 3 6.5 3 6 3.00 6.50 3.00 2017 6.5
307 307 20176.5 3 7.17 3.67 6 3.00 7.17 3.67 2017 6.5
308 308 20176.5 3 7.34 3.84 6 3.00 7.34 3.84 2017 6.5
309 309 20176.5 3 7.67 4.17 6 3.00 7.67 4.17 2017 6.5
310 310 20176.5 3.67 6.5 3.67 7 3.67 6.50 3.67 2017 6.5
311 311 20176.5 3.67 6.67 3.84 7 3.67 6.67 3.84 2017 6.5
312 312 20176.5 3.67 7 4.17 7 3.67 7.00 4.17 2017 6.5
313 313 20176.5 3.84 6.5 3.84 8 3.84 6.50 3.84 2017 6.5
314 314 20176.5 3.84 6.83 4.17 8 3.84 6.83 4.17 2017 6.5
315 315 20176.5 4.17 6.5 4.17 9 4.17 6.50 4.17 2017 6.5
316 316 20196.5 0 6.5 0 1 0.00 6.50 0.00 2019 6.5
317 317 20196.5 0 6.67 0.17 1 0.00 6.67 0.17 2019 6.5
318 318 20196.5 0 7.5 1 1 0.00 7.50 1.00 2019 6.5
319 319 20196.5 0 8.33 1.83 1 0.00 8.33 1.83 2019 6.5
320 320 20196.5 0 8.5 2 1 0.00 8.50 2.00 2019 6.5
321 321 20196.5 0 9.5 3 1 0.00 9.50 3.00 2019 6.5
322 322 20196.5 0 10.17 3.67 1 0.00 10.17 3.67 2019 6.5
323 323 20196.5 0 10.34 3.84 1 0.00 10.34 3.84 2019 6.5
324 324 20196.5 0 10.67 4.17 1 0.00 10.67 4.17 2019 6.5
325 325 20196.5 0.17 6.5 0.17 2 0.17 6.50 0.17 2019 6.5
326 326 20196.5 0.17 7.33 1 2 0.17 7.33 1.00 2019 6.5
327 327 20196.5 0.17 8.16 1.83 2 0.17 8.16 1.83 2019 6.5
328 328 20196.5 0.17 8.33 2 2 0.17 8.33 2.00 2019 6.5
329 329 20196.5 0.17 9.33 3 2 0.17 9.33 3.00 2019 6.5
330 330 20196.5 0.17 10 3.67 2 0.17 10.00 3.67 2019 6.5
331 331 20196.5 0.17 10.17 3.84 2 0.17 10.17 3.84 2019 6.5
332 332 20196.5 0.17 10.5 4.17 2 0.17 10.50 4.17 2019 6.5
333 333 20196.5 1 6.5 1 3 1.00 6.50 1.00 2019 6.5
334 334 20196.5 1 7.33 1.83 3 1.00 7.33 1.83 2019 6.5
335 335 20196.5 1 7.5 2 3 1.00 7.50 2.00 2019 6.5
336 336 20196.5 1 8.5 3 3 1.00 8.50 3.00 2019 6.5
337 337 20196.5 1 9.17 3.67 3 1.00 9.17 3.67 2019 6.5
338 338 20196.5 1 9.34 3.84 3 1.00 9.34 3.84 2019 6.5
339 339 20196.5 1 9.67 4.17 3 1.00 9.67 4.17 2019 6.5
340 340 20196.5 1.83 6.5 1.83 4 1.83 6.50 1.83 2019 6.5
341 341 20196.5 1.83 6.67 2 4 1.83 6.67 2.00 2019 6.5
342 342 20196.5 1.83 7.67 3 4 1.83 7.67 3.00 2019 6.5
343 343 20196.5 1.83 8.34 3.67 4 1.83 8.34 3.67 2019 6.5
344 344 20196.5 1.83 8.51 3.84 4 1.83 8.51 3.84 2019 6.5
345 345 20196.5 1.83 8.84 4.17 4 1.83 8.84 4.17 2019 6.5
346 346 20196.5 2 6.5 2 5 2.00 6.50 2.00 2019 6.5
347 347 20196.5 2 7.5 3 5 2.00 7.50 3.00 2019 6.5
348 348 20196.5 2 8.17 3.67 5 2.00 8.17 3.67 2019 6.5
349 349 20196.5 2 8.34 3.84 5 2.00 8.34 3.84 2019 6.5
350 350 20196.5 2 8.67 4.17 5 2.00 8.67 4.17 2019 6.5
351 351 20196.5 3 6.5 3 6 3.00 6.50 3.00 2019 6.5
352 352 20196.5 3 7.17 3.67 6 3.00 7.17 3.67 2019 6.5
353 353 20196.5 3 7.34 3.84 6 3.00 7.34 3.84 2019 6.5
354 354 20196.5 3 7.67 4.17 6 3.00 7.67 4.17 2019 6.5
355 355 20196.5 3.67 6.5 3.67 7 3.67 6.50 3.67 2019 6.5
356 356 20196.5 3.67 6.67 3.84 7 3.67 6.67 3.84 2019 6.5
357 357 20196.5 3.67 7 4.17 7 3.67 7.00 4.17 2019 6.5
358 358 20196.5 3.84 6.5 3.84 8 3.84 6.50 3.84 2019 6.5
359 359 20196.5 3.84 6.83 4.17 8 3.84 6.83 4.17 2019 6.5
360 360 20196.5 4.17 6.5 4.17 9 4.17 6.50 4.17 2019 6.5
361 361 20157.5 0 7.5 0 1 0.00 7.50 0.00 2015 7.5
362 362 20157.5 0 7.67 0.17 1 0.00 7.67 0.17 2015 7.5
363 363 20157.5 0 8.5 1 1 0.00 8.50 1.00 2015 7.5
364 364 20157.5 0 9.33 1.83 1 0.00 9.33 1.83 2015 7.5
365 365 20157.5 0 9.5 2 1 0.00 9.50 2.00 2015 7.5
366 366 20157.5 0 10.5 3 1 0.00 10.50 3.00 2015 7.5
367 367 20157.5 0 11.17 3.67 1 0.00 11.17 3.67 2015 7.5
368 368 20157.5 0 11.34 3.84 1 0.00 11.34 3.84 2015 7.5
369 369 20157.5 0 11.67 4.17 1 0.00 11.67 4.17 2015 7.5
370 370 20157.5 0.17 7.5 0.17 2 0.17 7.50 0.17 2015 7.5
371 371 20157.5 0.17 8.33 1 2 0.17 8.33 1.00 2015 7.5
372 372 20157.5 0.17 9.16 1.83 2 0.17 9.16 1.83 2015 7.5
373 373 20157.5 0.17 9.33 2 2 0.17 9.33 2.00 2015 7.5
374 374 20157.5 0.17 10.33 3 2 0.17 10.33 3.00 2015 7.5
375 375 20157.5 0.17 11 3.67 2 0.17 11.00 3.67 2015 7.5
376 376 20157.5 0.17 11.17 3.84 2 0.17 11.17 3.84 2015 7.5
377 377 20157.5 0.17 11.5 4.17 2 0.17 11.50 4.17 2015 7.5
378 378 20157.5 1 7.5 1 3 1.00 7.50 1.00 2015 7.5
379 379 20157.5 1 8.33 1.83 3 1.00 8.33 1.83 2015 7.5
380 380 20157.5 1 8.5 2 3 1.00 8.50 2.00 2015 7.5
381 381 20157.5 1 9.5 3 3 1.00 9.50 3.00 2015 7.5
382 382 20157.5 1 10.17 3.67 3 1.00 10.17 3.67 2015 7.5
383 383 20157.5 1 10.34 3.84 3 1.00 10.34 3.84 2015 7.5
384 384 20157.5 1 10.67 4.17 3 1.00 10.67 4.17 2015 7.5
385 385 20157.5 1.83 7.5 1.83 4 1.83 7.50 1.83 2015 7.5
386 386 20157.5 1.83 7.67 2 4 1.83 7.67 2.00 2015 7.5
387 387 20157.5 1.83 8.67 3 4 1.83 8.67 3.00 2015 7.5
388 388 20157.5 1.83 9.34 3.67 4 1.83 9.34 3.67 2015 7.5
389 389 20157.5 1.83 9.51 3.84 4 1.83 9.51 3.84 2015 7.5
390 390 20157.5 1.83 9.84 4.17 4 1.83 9.84 4.17 2015 7.5
391 391 20157.5 2 7.5 2 5 2.00 7.50 2.00 2015 7.5
392 392 20157.5 2 8.5 3 5 2.00 8.50 3.00 2015 7.5
393 393 20157.5 2 9.17 3.67 5 2.00 9.17 3.67 2015 7.5
394 394 20157.5 2 9.34 3.84 5 2.00 9.34 3.84 2015 7.5
395 395 20157.5 2 9.67 4.17 5 2.00 9.67 4.17 2015 7.5
396 396 20157.5 3 7.5 3 6 3.00 7.50 3.00 2015 7.5
397 397 20157.5 3 8.17 3.67 6 3.00 8.17 3.67 2015 7.5
398 398 20157.5 3 8.34 3.84 6 3.00 8.34 3.84 2015 7.5
399 399 20157.5 3 8.67 4.17 6 3.00 8.67 4.17 2015 7.5
400 400 20157.5 3.67 7.5 3.67 7 3.67 7.50 3.67 2015 7.5
401 401 20157.5 3.67 7.67 3.84 7 3.67 7.67 3.84 2015 7.5
402 402 20157.5 3.67 8 4.17 7 3.67 8.00 4.17 2015 7.5
403 403 20157.5 3.84 7.5 3.84 8 3.84 7.50 3.84 2015 7.5
404 404 20157.5 3.84 7.83 4.17 8 3.84 7.83 4.17 2015 7.5
405 405 20157.5 4.17 7.5 4.17 9 4.17 7.50 4.17 2015 7.5
406 406 20177.5 0 7.5 0 1 0.00 7.50 0.00 2017 7.5
407 407 20177.5 0 7.67 0.17 1 0.00 7.67 0.17 2017 7.5
408 408 20177.5 0 8.5 1 1 0.00 8.50 1.00 2017 7.5
409 409 20177.5 0 9.33 1.83 1 0.00 9.33 1.83 2017 7.5
410 410 20177.5 0 9.5 2 1 0.00 9.50 2.00 2017 7.5
411 411 20177.5 0 10.5 3 1 0.00 10.50 3.00 2017 7.5
412 412 20177.5 0 11.17 3.67 1 0.00 11.17 3.67 2017 7.5
413 413 20177.5 0 11.34 3.84 1 0.00 11.34 3.84 2017 7.5
414 414 20177.5 0 11.67 4.17 1 0.00 11.67 4.17 2017 7.5
415 415 20177.5 0.17 7.5 0.17 2 0.17 7.50 0.17 2017 7.5
416 416 20177.5 0.17 8.33 1 2 0.17 8.33 1.00 2017 7.5
417 417 20177.5 0.17 9.16 1.83 2 0.17 9.16 1.83 2017 7.5
418 418 20177.5 0.17 9.33 2 2 0.17 9.33 2.00 2017 7.5
419 419 20177.5 0.17 10.33 3 2 0.17 10.33 3.00 2017 7.5
420 420 20177.5 0.17 11 3.67 2 0.17 11.00 3.67 2017 7.5
421 421 20177.5 0.17 11.17 3.84 2 0.17 11.17 3.84 2017 7.5
422 422 20177.5 0.17 11.5 4.17 2 0.17 11.50 4.17 2017 7.5
423 423 20177.5 1 7.5 1 3 1.00 7.50 1.00 2017 7.5
424 424 20177.5 1 8.33 1.83 3 1.00 8.33 1.83 2017 7.5
425 425 20177.5 1 8.5 2 3 1.00 8.50 2.00 2017 7.5
426 426 20177.5 1 9.5 3 3 1.00 9.50 3.00 2017 7.5
427 427 20177.5 1 10.17 3.67 3 1.00 10.17 3.67 2017 7.5
428 428 20177.5 1 10.34 3.84 3 1.00 10.34 3.84 2017 7.5
429 429 20177.5 1 10.67 4.17 3 1.00 10.67 4.17 2017 7.5
430 430 20177.5 1.83 7.5 1.83 4 1.83 7.50 1.83 2017 7.5
431 431 20177.5 1.83 7.67 2 4 1.83 7.67 2.00 2017 7.5
432 432 20177.5 1.83 8.67 3 4 1.83 8.67 3.00 2017 7.5
433 433 20177.5 1.83 9.34 3.67 4 1.83 9.34 3.67 2017 7.5
434 434 20177.5 1.83 9.51 3.84 4 1.83 9.51 3.84 2017 7.5
435 435 20177.5 1.83 9.84 4.17 4 1.83 9.84 4.17 2017 7.5
436 436 20177.5 2 7.5 2 5 2.00 7.50 2.00 2017 7.5
437 437 20177.5 2 8.5 3 5 2.00 8.50 3.00 2017 7.5
438 438 20177.5 2 9.17 3.67 5 2.00 9.17 3.67 2017 7.5
439 439 20177.5 2 9.34 3.84 5 2.00 9.34 3.84 2017 7.5
440 440 20177.5 2 9.67 4.17 5 2.00 9.67 4.17 2017 7.5
441 441 20177.5 3 7.5 3 6 3.00 7.50 3.00 2017 7.5
442 442 20177.5 3 8.17 3.67 6 3.00 8.17 3.67 2017 7.5
443 443 20177.5 3 8.34 3.84 6 3.00 8.34 3.84 2017 7.5
444 444 20177.5 3 8.67 4.17 6 3.00 8.67 4.17 2017 7.5
445 445 20177.5 3.67 7.5 3.67 7 3.67 7.50 3.67 2017 7.5
446 446 20177.5 3.67 7.67 3.84 7 3.67 7.67 3.84 2017 7.5
447 447 20177.5 3.67 8 4.17 7 3.67 8.00 4.17 2017 7.5
448 448 20177.5 3.84 7.5 3.84 8 3.84 7.50 3.84 2017 7.5
449 449 20177.5 3.84 7.83 4.17 8 3.84 7.83 4.17 2017 7.5
450 450 20177.5 4.17 7.5 4.17 9 4.17 7.50 4.17 2017 7.5
451 451 20197.5 0 7.5 0 1 0.00 7.50 0.00 2019 7.5
452 452 20197.5 0 7.67 0.17 1 0.00 7.67 0.17 2019 7.5
453 453 20197.5 0 8.5 1 1 0.00 8.50 1.00 2019 7.5
454 454 20197.5 0 9.33 1.83 1 0.00 9.33 1.83 2019 7.5
455 455 20197.5 0 9.5 2 1 0.00 9.50 2.00 2019 7.5
456 456 20197.5 0 10.5 3 1 0.00 10.50 3.00 2019 7.5
457 457 20197.5 0 11.17 3.67 1 0.00 11.17 3.67 2019 7.5
458 458 20197.5 0 11.34 3.84 1 0.00 11.34 3.84 2019 7.5
459 459 20197.5 0 11.67 4.17 1 0.00 11.67 4.17 2019 7.5
460 460 20197.5 0.17 7.5 0.17 2 0.17 7.50 0.17 2019 7.5
461 461 20197.5 0.17 8.33 1 2 0.17 8.33 1.00 2019 7.5
462 462 20197.5 0.17 9.16 1.83 2 0.17 9.16 1.83 2019 7.5
463 463 20197.5 0.17 9.33 2 2 0.17 9.33 2.00 2019 7.5
464 464 20197.5 0.17 10.33 3 2 0.17 10.33 3.00 2019 7.5
465 465 20197.5 0.17 11 3.67 2 0.17 11.00 3.67 2019 7.5
466 466 20197.5 0.17 11.17 3.84 2 0.17 11.17 3.84 2019 7.5
467 467 20197.5 0.17 11.5 4.17 2 0.17 11.50 4.17 2019 7.5
468 468 20197.5 1 7.5 1 3 1.00 7.50 1.00 2019 7.5
469 469 20197.5 1 8.33 1.83 3 1.00 8.33 1.83 2019 7.5
470 470 20197.5 1 8.5 2 3 1.00 8.50 2.00 2019 7.5
471 471 20197.5 1 9.5 3 3 1.00 9.50 3.00 2019 7.5
472 472 20197.5 1 10.17 3.67 3 1.00 10.17 3.67 2019 7.5
473 473 20197.5 1 10.34 3.84 3 1.00 10.34 3.84 2019 7.5
474 474 20197.5 1 10.67 4.17 3 1.00 10.67 4.17 2019 7.5
475 475 20197.5 1.83 7.5 1.83 4 1.83 7.50 1.83 2019 7.5
476 476 20197.5 1.83 7.67 2 4 1.83 7.67 2.00 2019 7.5
477 477 20197.5 1.83 8.67 3 4 1.83 8.67 3.00 2019 7.5
478 478 20197.5 1.83 9.34 3.67 4 1.83 9.34 3.67 2019 7.5
479 479 20197.5 1.83 9.51 3.84 4 1.83 9.51 3.84 2019 7.5
480 480 20197.5 1.83 9.84 4.17 4 1.83 9.84 4.17 2019 7.5
481 481 20197.5 2 7.5 2 5 2.00 7.50 2.00 2019 7.5
482 482 20197.5 2 8.5 3 5 2.00 8.50 3.00 2019 7.5
483 483 20197.5 2 9.17 3.67 5 2.00 9.17 3.67 2019 7.5
484 484 20197.5 2 9.34 3.84 5 2.00 9.34 3.84 2019 7.5
485 485 20197.5 2 9.67 4.17 5 2.00 9.67 4.17 2019 7.5
486 486 20197.5 3 7.5 3 6 3.00 7.50 3.00 2019 7.5
487 487 20197.5 3 8.17 3.67 6 3.00 8.17 3.67 2019 7.5
488 488 20197.5 3 8.34 3.84 6 3.00 8.34 3.84 2019 7.5
489 489 20197.5 3 8.67 4.17 6 3.00 8.67 4.17 2019 7.5
490 490 20197.5 3.67 7.5 3.67 7 3.67 7.50 3.67 2019 7.5
491 491 20197.5 3.67 7.67 3.84 7 3.67 7.67 3.84 2019 7.5
492 492 20197.5 3.67 8 4.17 7 3.67 8.00 4.17 2019 7.5
493 493 20197.5 3.84 7.5 3.84 8 3.84 7.50 3.84 2019 7.5
494 494 20197.5 3.84 7.83 4.17 8 3.84 7.83 4.17 2019 7.5
495 495 20197.5 4.17 7.5 4.17 9 4.17 7.50 4.17 2019 7.5
496 496 20158.5 0 8.5 0 1 0.00 8.50 0.00 2015 8.5
497 497 20158.5 0 8.67 0.17 1 0.00 8.67 0.17 2015 8.5
498 498 20158.5 0 9.5 1 1 0.00 9.50 1.00 2015 8.5
499 499 20158.5 0 10.33 1.83 1 0.00 10.33 1.83 2015 8.5
500 500 20158.5 0 10.5 2 1 0.00 10.50 2.00 2015 8.5
501 501 20158.5 0 11.5 3 1 0.00 11.50 3.00 2015 8.5
502 502 20158.5 0 12.17 3.67 1 0.00 12.17 3.67 2015 8.5
503 503 20158.5 0 12.34 3.84 1 0.00 12.34 3.84 2015 8.5
504 504 20158.5 0 12.67 4.17 1 0.00 12.67 4.17 2015 8.5
505 505 20158.5 0.17 8.5 0.17 2 0.17 8.50 0.17 2015 8.5
506 506 20158.5 0.17 9.33 1 2 0.17 9.33 1.00 2015 8.5
507 507 20158.5 0.17 10.16 1.83 2 0.17 10.16 1.83 2015 8.5
508 508 20158.5 0.17 10.33 2 2 0.17 10.33 2.00 2015 8.5
509 509 20158.5 0.17 11.33 3 2 0.17 11.33 3.00 2015 8.5
510 510 20158.5 0.17 12 3.67 2 0.17 12.00 3.67 2015 8.5
511 511 20158.5 0.17 12.17 3.84 2 0.17 12.17 3.84 2015 8.5
512 512 20158.5 0.17 12.5 4.17 2 0.17 12.50 4.17 2015 8.5
513 513 20158.5 1 8.5 1 3 1.00 8.50 1.00 2015 8.5
514 514 20158.5 1 9.33 1.83 3 1.00 9.33 1.83 2015 8.5
515 515 20158.5 1 9.5 2 3 1.00 9.50 2.00 2015 8.5
516 516 20158.5 1 10.5 3 3 1.00 10.50 3.00 2015 8.5
517 517 20158.5 1 11.17 3.67 3 1.00 11.17 3.67 2015 8.5
518 518 20158.5 1 11.34 3.84 3 1.00 11.34 3.84 2015 8.5
519 519 20158.5 1 11.67 4.17 3 1.00 11.67 4.17 2015 8.5
520 520 20158.5 1.83 8.5 1.83 4 1.83 8.50 1.83 2015 8.5
521 521 20158.5 1.83 8.67 2 4 1.83 8.67 2.00 2015 8.5
522 522 20158.5 1.83 9.67 3 4 1.83 9.67 3.00 2015 8.5
523 523 20158.5 1.83 10.34 3.67 4 1.83 10.34 3.67 2015 8.5
524 524 20158.5 1.83 10.51 3.84 4 1.83 10.51 3.84 2015 8.5
525 525 20158.5 1.83 10.84 4.17 4 1.83 10.84 4.17 2015 8.5
526 526 20158.5 2 8.5 2 5 2.00 8.50 2.00 2015 8.5
527 527 20158.5 2 9.5 3 5 2.00 9.50 3.00 2015 8.5
528 528 20158.5 2 10.17 3.67 5 2.00 10.17 3.67 2015 8.5
529 529 20158.5 2 10.34 3.84 5 2.00 10.34 3.84 2015 8.5
530 530 20158.5 2 10.67 4.17 5 2.00 10.67 4.17 2015 8.5
531 531 20158.5 3 8.5 3 6 3.00 8.50 3.00 2015 8.5
532 532 20158.5 3 9.17 3.67 6 3.00 9.17 3.67 2015 8.5
533 533 20158.5 3 9.34 3.84 6 3.00 9.34 3.84 2015 8.5
534 534 20158.5 3 9.67 4.17 6 3.00 9.67 4.17 2015 8.5
535 535 20158.5 3.67 8.5 3.67 7 3.67 8.50 3.67 2015 8.5
536 536 20158.5 3.67 8.67 3.84 7 3.67 8.67 3.84 2015 8.5
537 537 20158.5 3.67 9 4.17 7 3.67 9.00 4.17 2015 8.5
538 538 20158.5 3.84 8.5 3.84 8 3.84 8.50 3.84 2015 8.5
539 539 20158.5 3.84 8.83 4.17 8 3.84 8.83 4.17 2015 8.5
540 540 20158.5 4.17 8.5 4.17 9 4.17 8.50 4.17 2015 8.5
541 541 20198.5 0 8.5 0 1 0.00 8.50 0.00 2019 8.5
542 542 20198.5 0 8.67 0.17 1 0.00 8.67 0.17 2019 8.5
543 543 20198.5 0 9.5 1 1 0.00 9.50 1.00 2019 8.5
544 544 20198.5 0 10.33 1.83 1 0.00 10.33 1.83 2019 8.5
545 545 20198.5 0 10.5 2 1 0.00 10.50 2.00 2019 8.5
546 546 20198.5 0 11.5 3 1 0.00 11.50 3.00 2019 8.5
547 547 20198.5 0 12.17 3.67 1 0.00 12.17 3.67 2019 8.5
548 548 20198.5 0 12.34 3.84 1 0.00 12.34 3.84 2019 8.5
549 549 20198.5 0 12.67 4.17 1 0.00 12.67 4.17 2019 8.5
550 550 20198.5 0.17 8.5 0.17 2 0.17 8.50 0.17 2019 8.5
551 551 20198.5 0.17 9.33 1 2 0.17 9.33 1.00 2019 8.5
552 552 20198.5 0.17 10.16 1.83 2 0.17 10.16 1.83 2019 8.5
553 553 20198.5 0.17 10.33 2 2 0.17 10.33 2.00 2019 8.5
554 554 20198.5 0.17 11.33 3 2 0.17 11.33 3.00 2019 8.5
555 555 20198.5 0.17 12 3.67 2 0.17 12.00 3.67 2019 8.5
556 556 20198.5 0.17 12.17 3.84 2 0.17 12.17 3.84 2019 8.5
557 557 20198.5 0.17 12.5 4.17 2 0.17 12.50 4.17 2019 8.5
558 558 20198.5 1 8.5 1 3 1.00 8.50 1.00 2019 8.5
559 559 20198.5 1 9.33 1.83 3 1.00 9.33 1.83 2019 8.5
560 560 20198.5 1 9.5 2 3 1.00 9.50 2.00 2019 8.5
561 561 20198.5 1 10.5 3 3 1.00 10.50 3.00 2019 8.5
562 562 20198.5 1 11.17 3.67 3 1.00 11.17 3.67 2019 8.5
563 563 20198.5 1 11.34 3.84 3 1.00 11.34 3.84 2019 8.5
564 564 20198.5 1 11.67 4.17 3 1.00 11.67 4.17 2019 8.5
565 565 20198.5 1.83 8.5 1.83 4 1.83 8.50 1.83 2019 8.5
566 566 20198.5 1.83 8.67 2 4 1.83 8.67 2.00 2019 8.5
567 567 20198.5 1.83 9.67 3 4 1.83 9.67 3.00 2019 8.5
568 568 20198.5 1.83 10.34 3.67 4 1.83 10.34 3.67 2019 8.5
569 569 20198.5 1.83 10.51 3.84 4 1.83 10.51 3.84 2019 8.5
570 570 20198.5 1.83 10.84 4.17 4 1.83 10.84 4.17 2019 8.5
571 571 20198.5 2 8.5 2 5 2.00 8.50 2.00 2019 8.5
572 572 20198.5 2 9.5 3 5 2.00 9.50 3.00 2019 8.5
573 573 20198.5 2 10.17 3.67 5 2.00 10.17 3.67 2019 8.5
574 574 20198.5 2 10.34 3.84 5 2.00 10.34 3.84 2019 8.5
575 575 20198.5 2 10.67 4.17 5 2.00 10.67 4.17 2019 8.5
576 576 20198.5 3 8.5 3 6 3.00 8.50 3.00 2019 8.5
577 577 20198.5 3 9.17 3.67 6 3.00 9.17 3.67 2019 8.5
578 578 20198.5 3 9.34 3.84 6 3.00 9.34 3.84 2019 8.5
579 579 20198.5 3 9.67 4.17 6 3.00 9.67 4.17 2019 8.5
580 580 20198.5 3.67 8.5 3.67 7 3.67 8.50 3.67 2019 8.5
581 581 20198.5 3.67 8.67 3.84 7 3.67 8.67 3.84 2019 8.5
582 582 20198.5 3.67 9 4.17 7 3.67 9.00 4.17 2019 8.5
583 583 20198.5 3.84 8.5 3.84 8 3.84 8.50 3.84 2019 8.5
584 584 20198.5 3.84 8.83 4.17 8 3.84 8.83 4.17 2019 8.5
585 585 20198.5 4.17 8.5 4.17 9 4.17 8.50 4.17 2019 8.5
586 586 20159.5 0 9.5 0 1 0.00 9.50 0.00 2015 9.5
587 587 20159.5 0 9.67 0.17 1 0.00 9.67 0.17 2015 9.5
588 588 20159.5 0 10.5 1 1 0.00 10.50 1.00 2015 9.5
589 589 20159.5 0 11.33 1.83 1 0.00 11.33 1.83 2015 9.5
590 590 20159.5 0 11.5 2 1 0.00 11.50 2.00 2015 9.5
591 591 20159.5 0 12.5 3 1 0.00 12.50 3.00 2015 9.5
592 592 20159.5 0 13.17 3.67 1 0.00 13.17 3.67 2015 9.5
593 593 20159.5 0 13.34 3.84 1 0.00 13.34 3.84 2015 9.5
594 594 20159.5 0 13.67 4.17 1 0.00 13.67 4.17 2015 9.5
595 595 20159.5 0.17 9.5 0.17 2 0.17 9.50 0.17 2015 9.5
596 596 20159.5 0.17 10.33 1 2 0.17 10.33 1.00 2015 9.5
597 597 20159.5 0.17 11.16 1.83 2 0.17 11.16 1.83 2015 9.5
598 598 20159.5 0.17 11.33 2 2 0.17 11.33 2.00 2015 9.5
599 599 20159.5 0.17 12.33 3 2 0.17 12.33 3.00 2015 9.5
600 600 20159.5 0.17 13 3.67 2 0.17 13.00 3.67 2015 9.5
601 601 20159.5 0.17 13.17 3.84 2 0.17 13.17 3.84 2015 9.5
602 602 20159.5 0.17 13.5 4.17 2 0.17 13.50 4.17 2015 9.5
603 603 20159.5 1 9.5 1 3 1.00 9.50 1.00 2015 9.5
604 604 20159.5 1 10.33 1.83 3 1.00 10.33 1.83 2015 9.5
605 605 20159.5 1 10.5 2 3 1.00 10.50 2.00 2015 9.5
606 606 20159.5 1 11.5 3 3 1.00 11.50 3.00 2015 9.5
607 607 20159.5 1 12.17 3.67 3 1.00 12.17 3.67 2015 9.5
608 608 20159.5 1 12.34 3.84 3 1.00 12.34 3.84 2015 9.5
609 609 20159.5 1 12.67 4.17 3 1.00 12.67 4.17 2015 9.5
610 610 20159.5 1.83 9.5 1.83 4 1.83 9.50 1.83 2015 9.5
611 611 20159.5 1.83 9.67 2 4 1.83 9.67 2.00 2015 9.5
612 612 20159.5 1.83 10.67 3 4 1.83 10.67 3.00 2015 9.5
613 613 20159.5 1.83 11.34 3.67 4 1.83 11.34 3.67 2015 9.5
614 614 20159.5 1.83 11.51 3.84 4 1.83 11.51 3.84 2015 9.5
615 615 20159.5 1.83 11.84 4.17 4 1.83 11.84 4.17 2015 9.5
616 616 20159.5 2 9.5 2 5 2.00 9.50 2.00 2015 9.5
617 617 20159.5 2 10.5 3 5 2.00 10.50 3.00 2015 9.5
618 618 20159.5 2 11.17 3.67 5 2.00 11.17 3.67 2015 9.5
619 619 20159.5 2 11.34 3.84 5 2.00 11.34 3.84 2015 9.5
620 620 20159.5 2 11.67 4.17 5 2.00 11.67 4.17 2015 9.5
621 621 20159.5 3 9.5 3 6 3.00 9.50 3.00 2015 9.5
622 622 20159.5 3 10.17 3.67 6 3.00 10.17 3.67 2015 9.5
623 623 20159.5 3 10.34 3.84 6 3.00 10.34 3.84 2015 9.5
624 624 20159.5 3 10.67 4.17 6 3.00 10.67 4.17 2015 9.5
625 625 20159.5 3.67 9.5 3.67 7 3.67 9.50 3.67 2015 9.5
626 626 20159.5 3.67 9.67 3.84 7 3.67 9.67 3.84 2015 9.5
627 627 20159.5 3.67 10 4.17 7 3.67 10.00 4.17 2015 9.5
628 628 20159.5 3.84 9.5 3.84 8 3.84 9.50 3.84 2015 9.5
629 629 20159.5 3.84 9.83 4.17 8 3.84 9.83 4.17 2015 9.5
630 630 20159.5 4.17 9.5 4.17 9 4.17 9.50 4.17 2015 9.5
631 631 201510.5 0 10.5 0 1 0.00 10.50 0.00 2015 10.5
632 632 201510.5 0 10.67 0.17 1 0.00 10.67 0.17 2015 10.5
633 633 201510.5 0 11.5 1 1 0.00 11.50 1.00 2015 10.5
634 634 201510.5 0 12.33 1.83 1 0.00 12.33 1.83 2015 10.5
635 635 201510.5 0 12.5 2 1 0.00 12.50 2.00 2015 10.5
636 636 201510.5 0 13.5 3 1 0.00 13.50 3.00 2015 10.5
637 637 201510.5 0 14.17 3.67 1 0.00 14.17 3.67 2015 10.5
638 638 201510.5 0 14.34 3.84 1 0.00 14.34 3.84 2015 10.5
639 639 201510.5 0 14.67 4.17 1 0.00 14.67 4.17 2015 10.5
640 640 201510.5 0.17 10.5 0.17 2 0.17 10.50 0.17 2015 10.5
641 641 201510.5 0.17 11.33 1 2 0.17 11.33 1.00 2015 10.5
642 642 201510.5 0.17 12.16 1.83 2 0.17 12.16 1.83 2015 10.5
643 643 201510.5 0.17 12.33 2 2 0.17 12.33 2.00 2015 10.5
644 644 201510.5 0.17 13.33 3 2 0.17 13.33 3.00 2015 10.5
645 645 201510.5 0.17 14 3.67 2 0.17 14.00 3.67 2015 10.5
646 646 201510.5 0.17 14.17 3.84 2 0.17 14.17 3.84 2015 10.5
647 647 201510.5 0.17 14.5 4.17 2 0.17 14.50 4.17 2015 10.5
648 648 201510.5 1 10.5 1 3 1.00 10.50 1.00 2015 10.5
649 649 201510.5 1 11.33 1.83 3 1.00 11.33 1.83 2015 10.5
650 650 201510.5 1 11.5 2 3 1.00 11.50 2.00 2015 10.5
651 651 201510.5 1 12.5 3 3 1.00 12.50 3.00 2015 10.5
652 652 201510.5 1 13.17 3.67 3 1.00 13.17 3.67 2015 10.5
653 653 201510.5 1 13.34 3.84 3 1.00 13.34 3.84 2015 10.5
654 654 201510.5 1 13.67 4.17 3 1.00 13.67 4.17 2015 10.5
655 655 201510.5 1.83 10.5 1.83 4 1.83 10.50 1.83 2015 10.5
656 656 201510.5 1.83 10.67 2 4 1.83 10.67 2.00 2015 10.5
657 657 201510.5 1.83 11.67 3 4 1.83 11.67 3.00 2015 10.5
658 658 201510.5 1.83 12.34 3.67 4 1.83 12.34 3.67 2015 10.5
659 659 201510.5 1.83 12.51 3.84 4 1.83 12.51 3.84 2015 10.5
660 660 201510.5 1.83 12.84 4.17 4 1.83 12.84 4.17 2015 10.5
661 661 201510.5 2 10.5 2 5 2.00 10.50 2.00 2015 10.5
662 662 201510.5 2 11.5 3 5 2.00 11.50 3.00 2015 10.5
663 663 201510.5 2 12.17 3.67 5 2.00 12.17 3.67 2015 10.5
664 664 201510.5 2 12.34 3.84 5 2.00 12.34 3.84 2015 10.5
665 665 201510.5 2 12.67 4.17 5 2.00 12.67 4.17 2015 10.5
666 666 201510.5 3 10.5 3 6 3.00 10.50 3.00 2015 10.5
667 667 201510.5 3 11.17 3.67 6 3.00 11.17 3.67 2015 10.5
668 668 201510.5 3 11.34 3.84 6 3.00 11.34 3.84 2015 10.5
669 669 201510.5 3 11.67 4.17 6 3.00 11.67 4.17 2015 10.5
670 670 201510.5 3.67 10.5 3.67 7 3.67 10.50 3.67 2015 10.5
671 671 201510.5 3.67 10.67 3.84 7 3.67 10.67 3.84 2015 10.5
672 672 201510.5 3.67 11 4.17 7 3.67 11.00 4.17 2015 10.5
673 673 201510.5 3.84 10.5 3.84 8 3.84 10.50 3.84 2015 10.5
674 674 201510.5 3.84 10.83 4.17 8 3.84 10.83 4.17 2015 10.5
675 675 201510.5 4.17 10.5 4.17 9 4.17 10.50 4.17 2015 10.5
kable(tortoises.ddl[[2]][], "html", 
      caption = "PIMS for p (detection) parameter") %>% 
  kable_styling(bootstrap_options = c("striped", "condensed")) %>%
  scroll_box(height = "300px")
PIMS for p (detection) parameter
time par.index model.index group cohort age occ.cohort Cohort Age Time release_cohort age_release effort fix
0.17 1 676 20154.5 0 4.67 1 0.00 4.67 0.00 2015 4.5 24 NA
1 2 677 20154.5 0 5.5 1 0.00 5.50 0.83 2015 4.5 36 NA
1.83 3 678 20154.5 0 6.33 1 0.00 6.33 1.66 2015 4.5 0 0
2 4 679 20154.5 0 6.5 1 0.00 6.50 1.83 2015 4.5 20 NA
3 5 680 20154.5 0 7.5 1 0.00 7.50 2.83 2015 4.5 24 NA
3.67 6 681 20154.5 0 8.17 1 0.00 8.17 3.50 2015 4.5 0 0
3.84 7 682 20154.5 0 8.34 1 0.00 8.34 3.67 2015 4.5 74 NA
4.17 8 683 20154.5 0 8.67 1 0.00 8.67 4.00 2015 4.5 24 NA
4.75 9 684 20154.5 0 9.25 1 0.00 9.25 4.58 2015 4.5 16 NA
1 10 685 20154.5 0.17 5.33 2 0.17 5.33 0.83 2015 4.5 36 NA
1.83 11 686 20154.5 0.17 6.16 2 0.17 6.16 1.66 2015 4.5 0 0
2 12 687 20154.5 0.17 6.33 2 0.17 6.33 1.83 2015 4.5 20 NA
3 13 688 20154.5 0.17 7.33 2 0.17 7.33 2.83 2015 4.5 24 NA
3.67 14 689 20154.5 0.17 8 2 0.17 8.00 3.50 2015 4.5 0 0
3.84 15 690 20154.5 0.17 8.17 2 0.17 8.17 3.67 2015 4.5 74 NA
4.17 16 691 20154.5 0.17 8.5 2 0.17 8.50 4.00 2015 4.5 24 NA
4.75 17 692 20154.5 0.17 9.08 2 0.17 9.08 4.58 2015 4.5 16 NA
1.83 18 693 20154.5 1 5.33 3 1.00 5.33 1.66 2015 4.5 0 0
2 19 694 20154.5 1 5.5 3 1.00 5.50 1.83 2015 4.5 20 NA
3 20 695 20154.5 1 6.5 3 1.00 6.50 2.83 2015 4.5 24 NA
3.67 21 696 20154.5 1 7.17 3 1.00 7.17 3.50 2015 4.5 0 0
3.84 22 697 20154.5 1 7.34 3 1.00 7.34 3.67 2015 4.5 74 NA
4.17 23 698 20154.5 1 7.67 3 1.00 7.67 4.00 2015 4.5 24 NA
4.75 24 699 20154.5 1 8.25 3 1.00 8.25 4.58 2015 4.5 16 NA
2 25 700 20154.5 1.83 4.67 4 1.83 4.67 1.83 2015 4.5 20 NA
3 26 701 20154.5 1.83 5.67 4 1.83 5.67 2.83 2015 4.5 24 NA
3.67 27 702 20154.5 1.83 6.34 4 1.83 6.34 3.50 2015 4.5 0 0
3.84 28 703 20154.5 1.83 6.51 4 1.83 6.51 3.67 2015 4.5 74 NA
4.17 29 704 20154.5 1.83 6.84 4 1.83 6.84 4.00 2015 4.5 24 NA
4.75 30 705 20154.5 1.83 7.42 4 1.83 7.42 4.58 2015 4.5 16 NA
3 31 706 20154.5 2 5.5 5 2.00 5.50 2.83 2015 4.5 24 NA
3.67 32 707 20154.5 2 6.17 5 2.00 6.17 3.50 2015 4.5 0 0
3.84 33 708 20154.5 2 6.34 5 2.00 6.34 3.67 2015 4.5 74 NA
4.17 34 709 20154.5 2 6.67 5 2.00 6.67 4.00 2015 4.5 24 NA
4.75 35 710 20154.5 2 7.25 5 2.00 7.25 4.58 2015 4.5 16 NA
3.67 36 711 20154.5 3 5.17 6 3.00 5.17 3.50 2015 4.5 0 0
3.84 37 712 20154.5 3 5.34 6 3.00 5.34 3.67 2015 4.5 74 NA
4.17 38 713 20154.5 3 5.67 6 3.00 5.67 4.00 2015 4.5 24 NA
4.75 39 714 20154.5 3 6.25 6 3.00 6.25 4.58 2015 4.5 16 NA
3.84 40 715 20154.5 3.67 4.67 7 3.67 4.67 3.67 2015 4.5 74 NA
4.17 41 716 20154.5 3.67 5 7 3.67 5.00 4.00 2015 4.5 24 NA
4.75 42 717 20154.5 3.67 5.58 7 3.67 5.58 4.58 2015 4.5 16 NA
4.17 43 718 20154.5 3.84 4.83 8 3.84 4.83 4.00 2015 4.5 24 NA
4.75 44 719 20154.5 3.84 5.41 8 3.84 5.41 4.58 2015 4.5 16 NA
4.75 45 720 20154.5 4.17 5.08 9 4.17 5.08 4.58 2015 4.5 16 NA
0.17 46 721 20174.5 0 4.67 1 0.00 4.67 0.00 2017 4.5 24 NA
1 47 722 20174.5 0 5.5 1 0.00 5.50 0.83 2017 4.5 36 NA
1.83 48 723 20174.5 0 6.33 1 0.00 6.33 1.66 2017 4.5 0 NA
2 49 724 20174.5 0 6.5 1 0.00 6.50 1.83 2017 4.5 20 NA
3 50 725 20174.5 0 7.5 1 0.00 7.50 2.83 2017 4.5 24 NA
3.67 51 726 20174.5 0 8.17 1 0.00 8.17 3.50 2017 4.5 0 0
3.84 52 727 20174.5 0 8.34 1 0.00 8.34 3.67 2017 4.5 74 NA
4.17 53 728 20174.5 0 8.67 1 0.00 8.67 4.00 2017 4.5 24 NA
4.75 54 729 20174.5 0 9.25 1 0.00 9.25 4.58 2017 4.5 16 NA
1 55 730 20174.5 0.17 5.33 2 0.17 5.33 0.83 2017 4.5 36 NA
1.83 56 731 20174.5 0.17 6.16 2 0.17 6.16 1.66 2017 4.5 0 NA
2 57 732 20174.5 0.17 6.33 2 0.17 6.33 1.83 2017 4.5 20 NA
3 58 733 20174.5 0.17 7.33 2 0.17 7.33 2.83 2017 4.5 24 NA
3.67 59 734 20174.5 0.17 8 2 0.17 8.00 3.50 2017 4.5 0 0
3.84 60 735 20174.5 0.17 8.17 2 0.17 8.17 3.67 2017 4.5 74 NA
4.17 61 736 20174.5 0.17 8.5 2 0.17 8.50 4.00 2017 4.5 24 NA
4.75 62 737 20174.5 0.17 9.08 2 0.17 9.08 4.58 2017 4.5 16 NA
1.83 63 738 20174.5 1 5.33 3 1.00 5.33 1.66 2017 4.5 0 NA
2 64 739 20174.5 1 5.5 3 1.00 5.50 1.83 2017 4.5 20 NA
3 65 740 20174.5 1 6.5 3 1.00 6.50 2.83 2017 4.5 24 NA
3.67 66 741 20174.5 1 7.17 3 1.00 7.17 3.50 2017 4.5 0 0
3.84 67 742 20174.5 1 7.34 3 1.00 7.34 3.67 2017 4.5 74 NA
4.17 68 743 20174.5 1 7.67 3 1.00 7.67 4.00 2017 4.5 24 NA
4.75 69 744 20174.5 1 8.25 3 1.00 8.25 4.58 2017 4.5 16 NA
2 70 745 20174.5 1.83 4.67 4 1.83 4.67 1.83 2017 4.5 20 NA
3 71 746 20174.5 1.83 5.67 4 1.83 5.67 2.83 2017 4.5 24 NA
3.67 72 747 20174.5 1.83 6.34 4 1.83 6.34 3.50 2017 4.5 0 0
3.84 73 748 20174.5 1.83 6.51 4 1.83 6.51 3.67 2017 4.5 74 NA
4.17 74 749 20174.5 1.83 6.84 4 1.83 6.84 4.00 2017 4.5 24 NA
4.75 75 750 20174.5 1.83 7.42 4 1.83 7.42 4.58 2017 4.5 16 NA
3 76 751 20174.5 2 5.5 5 2.00 5.50 2.83 2017 4.5 24 NA
3.67 77 752 20174.5 2 6.17 5 2.00 6.17 3.50 2017 4.5 0 0
3.84 78 753 20174.5 2 6.34 5 2.00 6.34 3.67 2017 4.5 74 NA
4.17 79 754 20174.5 2 6.67 5 2.00 6.67 4.00 2017 4.5 24 NA
4.75 80 755 20174.5 2 7.25 5 2.00 7.25 4.58 2017 4.5 16 NA
3.67 81 756 20174.5 3 5.17 6 3.00 5.17 3.50 2017 4.5 0 0
3.84 82 757 20174.5 3 5.34 6 3.00 5.34 3.67 2017 4.5 74 NA
4.17 83 758 20174.5 3 5.67 6 3.00 5.67 4.00 2017 4.5 24 NA
4.75 84 759 20174.5 3 6.25 6 3.00 6.25 4.58 2017 4.5 16 NA
3.84 85 760 20174.5 3.67 4.67 7 3.67 4.67 3.67 2017 4.5 74 NA
4.17 86 761 20174.5 3.67 5 7 3.67 5.00 4.00 2017 4.5 24 NA
4.75 87 762 20174.5 3.67 5.58 7 3.67 5.58 4.58 2017 4.5 16 NA
4.17 88 763 20174.5 3.84 4.83 8 3.84 4.83 4.00 2017 4.5 24 NA
4.75 89 764 20174.5 3.84 5.41 8 3.84 5.41 4.58 2017 4.5 16 NA
4.75 90 765 20174.5 4.17 5.08 9 4.17 5.08 4.58 2017 4.5 16 NA
0.17 91 766 20155.5 0 5.67 1 0.00 5.67 0.00 2015 5.5 24 NA
1 92 767 20155.5 0 6.5 1 0.00 6.50 0.83 2015 5.5 36 NA
1.83 93 768 20155.5 0 7.33 1 0.00 7.33 1.66 2015 5.5 0 0
2 94 769 20155.5 0 7.5 1 0.00 7.50 1.83 2015 5.5 20 NA
3 95 770 20155.5 0 8.5 1 0.00 8.50 2.83 2015 5.5 24 NA
3.67 96 771 20155.5 0 9.17 1 0.00 9.17 3.50 2015 5.5 0 0
3.84 97 772 20155.5 0 9.34 1 0.00 9.34 3.67 2015 5.5 74 NA
4.17 98 773 20155.5 0 9.67 1 0.00 9.67 4.00 2015 5.5 24 NA
4.75 99 774 20155.5 0 10.25 1 0.00 10.25 4.58 2015 5.5 16 NA
1 100 775 20155.5 0.17 6.33 2 0.17 6.33 0.83 2015 5.5 36 NA
1.83 101 776 20155.5 0.17 7.16 2 0.17 7.16 1.66 2015 5.5 0 0
2 102 777 20155.5 0.17 7.33 2 0.17 7.33 1.83 2015 5.5 20 NA
3 103 778 20155.5 0.17 8.33 2 0.17 8.33 2.83 2015 5.5 24 NA
3.67 104 779 20155.5 0.17 9 2 0.17 9.00 3.50 2015 5.5 0 0
3.84 105 780 20155.5 0.17 9.17 2 0.17 9.17 3.67 2015 5.5 74 NA
4.17 106 781 20155.5 0.17 9.5 2 0.17 9.50 4.00 2015 5.5 24 NA
4.75 107 782 20155.5 0.17 10.08 2 0.17 10.08 4.58 2015 5.5 16 NA
1.83 108 783 20155.5 1 6.33 3 1.00 6.33 1.66 2015 5.5 0 0
2 109 784 20155.5 1 6.5 3 1.00 6.50 1.83 2015 5.5 20 NA
3 110 785 20155.5 1 7.5 3 1.00 7.50 2.83 2015 5.5 24 NA
3.67 111 786 20155.5 1 8.17 3 1.00 8.17 3.50 2015 5.5 0 0
3.84 112 787 20155.5 1 8.34 3 1.00 8.34 3.67 2015 5.5 74 NA
4.17 113 788 20155.5 1 8.67 3 1.00 8.67 4.00 2015 5.5 24 NA
4.75 114 789 20155.5 1 9.25 3 1.00 9.25 4.58 2015 5.5 16 NA
2 115 790 20155.5 1.83 5.67 4 1.83 5.67 1.83 2015 5.5 20 NA
3 116 791 20155.5 1.83 6.67 4 1.83 6.67 2.83 2015 5.5 24 NA
3.67 117 792 20155.5 1.83 7.34 4 1.83 7.34 3.50 2015 5.5 0 0
3.84 118 793 20155.5 1.83 7.51 4 1.83 7.51 3.67 2015 5.5 74 NA
4.17 119 794 20155.5 1.83 7.84 4 1.83 7.84 4.00 2015 5.5 24 NA
4.75 120 795 20155.5 1.83 8.42 4 1.83 8.42 4.58 2015 5.5 16 NA
3 121 796 20155.5 2 6.5 5 2.00 6.50 2.83 2015 5.5 24 NA
3.67 122 797 20155.5 2 7.17 5 2.00 7.17 3.50 2015 5.5 0 0
3.84 123 798 20155.5 2 7.34 5 2.00 7.34 3.67 2015 5.5 74 NA
4.17 124 799 20155.5 2 7.67 5 2.00 7.67 4.00 2015 5.5 24 NA
4.75 125 800 20155.5 2 8.25 5 2.00 8.25 4.58 2015 5.5 16 NA
3.67 126 801 20155.5 3 6.17 6 3.00 6.17 3.50 2015 5.5 0 0
3.84 127 802 20155.5 3 6.34 6 3.00 6.34 3.67 2015 5.5 74 NA
4.17 128 803 20155.5 3 6.67 6 3.00 6.67 4.00 2015 5.5 24 NA
4.75 129 804 20155.5 3 7.25 6 3.00 7.25 4.58 2015 5.5 16 NA
3.84 130 805 20155.5 3.67 5.67 7 3.67 5.67 3.67 2015 5.5 74 NA
4.17 131 806 20155.5 3.67 6 7 3.67 6.00 4.00 2015 5.5 24 NA
4.75 132 807 20155.5 3.67 6.58 7 3.67 6.58 4.58 2015 5.5 16 NA
4.17 133 808 20155.5 3.84 5.83 8 3.84 5.83 4.00 2015 5.5 24 NA
4.75 134 809 20155.5 3.84 6.41 8 3.84 6.41 4.58 2015 5.5 16 NA
4.75 135 810 20155.5 4.17 6.08 9 4.17 6.08 4.58 2015 5.5 16 NA
0.17 136 811 20175.5 0 5.67 1 0.00 5.67 0.00 2017 5.5 24 NA
1 137 812 20175.5 0 6.5 1 0.00 6.50 0.83 2017 5.5 36 NA
1.83 138 813 20175.5 0 7.33 1 0.00 7.33 1.66 2017 5.5 0 NA
2 139 814 20175.5 0 7.5 1 0.00 7.50 1.83 2017 5.5 20 NA
3 140 815 20175.5 0 8.5 1 0.00 8.50 2.83 2017 5.5 24 NA
3.67 141 816 20175.5 0 9.17 1 0.00 9.17 3.50 2017 5.5 0 0
3.84 142 817 20175.5 0 9.34 1 0.00 9.34 3.67 2017 5.5 74 NA
4.17 143 818 20175.5 0 9.67 1 0.00 9.67 4.00 2017 5.5 24 NA
4.75 144 819 20175.5 0 10.25 1 0.00 10.25 4.58 2017 5.5 16 NA
1 145 820 20175.5 0.17 6.33 2 0.17 6.33 0.83 2017 5.5 36 NA
1.83 146 821 20175.5 0.17 7.16 2 0.17 7.16 1.66 2017 5.5 0 NA
2 147 822 20175.5 0.17 7.33 2 0.17 7.33 1.83 2017 5.5 20 NA
3 148 823 20175.5 0.17 8.33 2 0.17 8.33 2.83 2017 5.5 24 NA
3.67 149 824 20175.5 0.17 9 2 0.17 9.00 3.50 2017 5.5 0 0
3.84 150 825 20175.5 0.17 9.17 2 0.17 9.17 3.67 2017 5.5 74 NA
4.17 151 826 20175.5 0.17 9.5 2 0.17 9.50 4.00 2017 5.5 24 NA
4.75 152 827 20175.5 0.17 10.08 2 0.17 10.08 4.58 2017 5.5 16 NA
1.83 153 828 20175.5 1 6.33 3 1.00 6.33 1.66 2017 5.5 0 NA
2 154 829 20175.5 1 6.5 3 1.00 6.50 1.83 2017 5.5 20 NA
3 155 830 20175.5 1 7.5 3 1.00 7.50 2.83 2017 5.5 24 NA
3.67 156 831 20175.5 1 8.17 3 1.00 8.17 3.50 2017 5.5 0 0
3.84 157 832 20175.5 1 8.34 3 1.00 8.34 3.67 2017 5.5 74 NA
4.17 158 833 20175.5 1 8.67 3 1.00 8.67 4.00 2017 5.5 24 NA
4.75 159 834 20175.5 1 9.25 3 1.00 9.25 4.58 2017 5.5 16 NA
2 160 835 20175.5 1.83 5.67 4 1.83 5.67 1.83 2017 5.5 20 NA
3 161 836 20175.5 1.83 6.67 4 1.83 6.67 2.83 2017 5.5 24 NA
3.67 162 837 20175.5 1.83 7.34 4 1.83 7.34 3.50 2017 5.5 0 0
3.84 163 838 20175.5 1.83 7.51 4 1.83 7.51 3.67 2017 5.5 74 NA
4.17 164 839 20175.5 1.83 7.84 4 1.83 7.84 4.00 2017 5.5 24 NA
4.75 165 840 20175.5 1.83 8.42 4 1.83 8.42 4.58 2017 5.5 16 NA
3 166 841 20175.5 2 6.5 5 2.00 6.50 2.83 2017 5.5 24 NA
3.67 167 842 20175.5 2 7.17 5 2.00 7.17 3.50 2017 5.5 0 0
3.84 168 843 20175.5 2 7.34 5 2.00 7.34 3.67 2017 5.5 74 NA
4.17 169 844 20175.5 2 7.67 5 2.00 7.67 4.00 2017 5.5 24 NA
4.75 170 845 20175.5 2 8.25 5 2.00 8.25 4.58 2017 5.5 16 NA
3.67 171 846 20175.5 3 6.17 6 3.00 6.17 3.50 2017 5.5 0 0
3.84 172 847 20175.5 3 6.34 6 3.00 6.34 3.67 2017 5.5 74 NA
4.17 173 848 20175.5 3 6.67 6 3.00 6.67 4.00 2017 5.5 24 NA
4.75 174 849 20175.5 3 7.25 6 3.00 7.25 4.58 2017 5.5 16 NA
3.84 175 850 20175.5 3.67 5.67 7 3.67 5.67 3.67 2017 5.5 74 NA
4.17 176 851 20175.5 3.67 6 7 3.67 6.00 4.00 2017 5.5 24 NA
4.75 177 852 20175.5 3.67 6.58 7 3.67 6.58 4.58 2017 5.5 16 NA
4.17 178 853 20175.5 3.84 5.83 8 3.84 5.83 4.00 2017 5.5 24 NA
4.75 179 854 20175.5 3.84 6.41 8 3.84 6.41 4.58 2017 5.5 16 NA
4.75 180 855 20175.5 4.17 6.08 9 4.17 6.08 4.58 2017 5.5 16 NA
0.17 181 856 20195.5 0 5.67 1 0.00 5.67 0.00 2019 5.5 24 NA
1 182 857 20195.5 0 6.5 1 0.00 6.50 0.83 2019 5.5 36 NA
1.83 183 858 20195.5 0 7.33 1 0.00 7.33 1.66 2019 5.5 0 NA
2 184 859 20195.5 0 7.5 1 0.00 7.50 1.83 2019 5.5 20 NA
3 185 860 20195.5 0 8.5 1 0.00 8.50 2.83 2019 5.5 24 NA
3.67 186 861 20195.5 0 9.17 1 0.00 9.17 3.50 2019 5.5 0 NA
3.84 187 862 20195.5 0 9.34 1 0.00 9.34 3.67 2019 5.5 74 NA
4.17 188 863 20195.5 0 9.67 1 0.00 9.67 4.00 2019 5.5 24 NA
4.75 189 864 20195.5 0 10.25 1 0.00 10.25 4.58 2019 5.5 16 NA
1 190 865 20195.5 0.17 6.33 2 0.17 6.33 0.83 2019 5.5 36 NA
1.83 191 866 20195.5 0.17 7.16 2 0.17 7.16 1.66 2019 5.5 0 NA
2 192 867 20195.5 0.17 7.33 2 0.17 7.33 1.83 2019 5.5 20 NA
3 193 868 20195.5 0.17 8.33 2 0.17 8.33 2.83 2019 5.5 24 NA
3.67 194 869 20195.5 0.17 9 2 0.17 9.00 3.50 2019 5.5 0 NA
3.84 195 870 20195.5 0.17 9.17 2 0.17 9.17 3.67 2019 5.5 74 NA
4.17 196 871 20195.5 0.17 9.5 2 0.17 9.50 4.00 2019 5.5 24 NA
4.75 197 872 20195.5 0.17 10.08 2 0.17 10.08 4.58 2019 5.5 16 NA
1.83 198 873 20195.5 1 6.33 3 1.00 6.33 1.66 2019 5.5 0 NA
2 199 874 20195.5 1 6.5 3 1.00 6.50 1.83 2019 5.5 20 NA
3 200 875 20195.5 1 7.5 3 1.00 7.50 2.83 2019 5.5 24 NA
3.67 201 876 20195.5 1 8.17 3 1.00 8.17 3.50 2019 5.5 0 NA
3.84 202 877 20195.5 1 8.34 3 1.00 8.34 3.67 2019 5.5 74 NA
4.17 203 878 20195.5 1 8.67 3 1.00 8.67 4.00 2019 5.5 24 NA
4.75 204 879 20195.5 1 9.25 3 1.00 9.25 4.58 2019 5.5 16 NA
2 205 880 20195.5 1.83 5.67 4 1.83 5.67 1.83 2019 5.5 20 NA
3 206 881 20195.5 1.83 6.67 4 1.83 6.67 2.83 2019 5.5 24 NA
3.67 207 882 20195.5 1.83 7.34 4 1.83 7.34 3.50 2019 5.5 0 NA
3.84 208 883 20195.5 1.83 7.51 4 1.83 7.51 3.67 2019 5.5 74 NA
4.17 209 884 20195.5 1.83 7.84 4 1.83 7.84 4.00 2019 5.5 24 NA
4.75 210 885 20195.5 1.83 8.42 4 1.83 8.42 4.58 2019 5.5 16 NA
3 211 886 20195.5 2 6.5 5 2.00 6.50 2.83 2019 5.5 24 NA
3.67 212 887 20195.5 2 7.17 5 2.00 7.17 3.50 2019 5.5 0 NA
3.84 213 888 20195.5 2 7.34 5 2.00 7.34 3.67 2019 5.5 74 NA
4.17 214 889 20195.5 2 7.67 5 2.00 7.67 4.00 2019 5.5 24 NA
4.75 215 890 20195.5 2 8.25 5 2.00 8.25 4.58 2019 5.5 16 NA
3.67 216 891 20195.5 3 6.17 6 3.00 6.17 3.50 2019 5.5 0 NA
3.84 217 892 20195.5 3 6.34 6 3.00 6.34 3.67 2019 5.5 74 NA
4.17 218 893 20195.5 3 6.67 6 3.00 6.67 4.00 2019 5.5 24 NA
4.75 219 894 20195.5 3 7.25 6 3.00 7.25 4.58 2019 5.5 16 NA
3.84 220 895 20195.5 3.67 5.67 7 3.67 5.67 3.67 2019 5.5 74 NA
4.17 221 896 20195.5 3.67 6 7 3.67 6.00 4.00 2019 5.5 24 NA
4.75 222 897 20195.5 3.67 6.58 7 3.67 6.58 4.58 2019 5.5 16 NA
4.17 223 898 20195.5 3.84 5.83 8 3.84 5.83 4.00 2019 5.5 24 NA
4.75 224 899 20195.5 3.84 6.41 8 3.84 6.41 4.58 2019 5.5 16 NA
4.75 225 900 20195.5 4.17 6.08 9 4.17 6.08 4.58 2019 5.5 16 NA
0.17 226 901 20156.5 0 6.67 1 0.00 6.67 0.00 2015 6.5 24 NA
1 227 902 20156.5 0 7.5 1 0.00 7.50 0.83 2015 6.5 36 NA
1.83 228 903 20156.5 0 8.33 1 0.00 8.33 1.66 2015 6.5 0 0
2 229 904 20156.5 0 8.5 1 0.00 8.50 1.83 2015 6.5 20 NA
3 230 905 20156.5 0 9.5 1 0.00 9.50 2.83 2015 6.5 24 NA
3.67 231 906 20156.5 0 10.17 1 0.00 10.17 3.50 2015 6.5 0 0
3.84 232 907 20156.5 0 10.34 1 0.00 10.34 3.67 2015 6.5 74 NA
4.17 233 908 20156.5 0 10.67 1 0.00 10.67 4.00 2015 6.5 24 NA
4.75 234 909 20156.5 0 11.25 1 0.00 11.25 4.58 2015 6.5 16 NA
1 235 910 20156.5 0.17 7.33 2 0.17 7.33 0.83 2015 6.5 36 NA
1.83 236 911 20156.5 0.17 8.16 2 0.17 8.16 1.66 2015 6.5 0 0
2 237 912 20156.5 0.17 8.33 2 0.17 8.33 1.83 2015 6.5 20 NA
3 238 913 20156.5 0.17 9.33 2 0.17 9.33 2.83 2015 6.5 24 NA
3.67 239 914 20156.5 0.17 10 2 0.17 10.00 3.50 2015 6.5 0 0
3.84 240 915 20156.5 0.17 10.17 2 0.17 10.17 3.67 2015 6.5 74 NA
4.17 241 916 20156.5 0.17 10.5 2 0.17 10.50 4.00 2015 6.5 24 NA
4.75 242 917 20156.5 0.17 11.08 2 0.17 11.08 4.58 2015 6.5 16 NA
1.83 243 918 20156.5 1 7.33 3 1.00 7.33 1.66 2015 6.5 0 0
2 244 919 20156.5 1 7.5 3 1.00 7.50 1.83 2015 6.5 20 NA
3 245 920 20156.5 1 8.5 3 1.00 8.50 2.83 2015 6.5 24 NA
3.67 246 921 20156.5 1 9.17 3 1.00 9.17 3.50 2015 6.5 0 0
3.84 247 922 20156.5 1 9.34 3 1.00 9.34 3.67 2015 6.5 74 NA
4.17 248 923 20156.5 1 9.67 3 1.00 9.67 4.00 2015 6.5 24 NA
4.75 249 924 20156.5 1 10.25 3 1.00 10.25 4.58 2015 6.5 16 NA
2 250 925 20156.5 1.83 6.67 4 1.83 6.67 1.83 2015 6.5 20 NA
3 251 926 20156.5 1.83 7.67 4 1.83 7.67 2.83 2015 6.5 24 NA
3.67 252 927 20156.5 1.83 8.34 4 1.83 8.34 3.50 2015 6.5 0 0
3.84 253 928 20156.5 1.83 8.51 4 1.83 8.51 3.67 2015 6.5 74 NA
4.17 254 929 20156.5 1.83 8.84 4 1.83 8.84 4.00 2015 6.5 24 NA
4.75 255 930 20156.5 1.83 9.42 4 1.83 9.42 4.58 2015 6.5 16 NA
3 256 931 20156.5 2 7.5 5 2.00 7.50 2.83 2015 6.5 24 NA
3.67 257 932 20156.5 2 8.17 5 2.00 8.17 3.50 2015 6.5 0 0
3.84 258 933 20156.5 2 8.34 5 2.00 8.34 3.67 2015 6.5 74 NA
4.17 259 934 20156.5 2 8.67 5 2.00 8.67 4.00 2015 6.5 24 NA
4.75 260 935 20156.5 2 9.25 5 2.00 9.25 4.58 2015 6.5 16 NA
3.67 261 936 20156.5 3 7.17 6 3.00 7.17 3.50 2015 6.5 0 0
3.84 262 937 20156.5 3 7.34 6 3.00 7.34 3.67 2015 6.5 74 NA
4.17 263 938 20156.5 3 7.67 6 3.00 7.67 4.00 2015 6.5 24 NA
4.75 264 939 20156.5 3 8.25 6 3.00 8.25 4.58 2015 6.5 16 NA
3.84 265 940 20156.5 3.67 6.67 7 3.67 6.67 3.67 2015 6.5 74 NA
4.17 266 941 20156.5 3.67 7 7 3.67 7.00 4.00 2015 6.5 24 NA
4.75 267 942 20156.5 3.67 7.58 7 3.67 7.58 4.58 2015 6.5 16 NA
4.17 268 943 20156.5 3.84 6.83 8 3.84 6.83 4.00 2015 6.5 24 NA
4.75 269 944 20156.5 3.84 7.41 8 3.84 7.41 4.58 2015 6.5 16 NA
4.75 270 945 20156.5 4.17 7.08 9 4.17 7.08 4.58 2015 6.5 16 NA
0.17 271 946 20176.5 0 6.67 1 0.00 6.67 0.00 2017 6.5 24 NA
1 272 947 20176.5 0 7.5 1 0.00 7.50 0.83 2017 6.5 36 NA
1.83 273 948 20176.5 0 8.33 1 0.00 8.33 1.66 2017 6.5 0 NA
2 274 949 20176.5 0 8.5 1 0.00 8.50 1.83 2017 6.5 20 NA
3 275 950 20176.5 0 9.5 1 0.00 9.50 2.83 2017 6.5 24 NA
3.67 276 951 20176.5 0 10.17 1 0.00 10.17 3.50 2017 6.5 0 0
3.84 277 952 20176.5 0 10.34 1 0.00 10.34 3.67 2017 6.5 74 NA
4.17 278 953 20176.5 0 10.67 1 0.00 10.67 4.00 2017 6.5 24 NA
4.75 279 954 20176.5 0 11.25 1 0.00 11.25 4.58 2017 6.5 16 NA
1 280 955 20176.5 0.17 7.33 2 0.17 7.33 0.83 2017 6.5 36 NA
1.83 281 956 20176.5 0.17 8.16 2 0.17 8.16 1.66 2017 6.5 0 NA
2 282 957 20176.5 0.17 8.33 2 0.17 8.33 1.83 2017 6.5 20 NA
3 283 958 20176.5 0.17 9.33 2 0.17 9.33 2.83 2017 6.5 24 NA
3.67 284 959 20176.5 0.17 10 2 0.17 10.00 3.50 2017 6.5 0 0
3.84 285 960 20176.5 0.17 10.17 2 0.17 10.17 3.67 2017 6.5 74 NA
4.17 286 961 20176.5 0.17 10.5 2 0.17 10.50 4.00 2017 6.5 24 NA
4.75 287 962 20176.5 0.17 11.08 2 0.17 11.08 4.58 2017 6.5 16 NA
1.83 288 963 20176.5 1 7.33 3 1.00 7.33 1.66 2017 6.5 0 NA
2 289 964 20176.5 1 7.5 3 1.00 7.50 1.83 2017 6.5 20 NA
3 290 965 20176.5 1 8.5 3 1.00 8.50 2.83 2017 6.5 24 NA
3.67 291 966 20176.5 1 9.17 3 1.00 9.17 3.50 2017 6.5 0 0
3.84 292 967 20176.5 1 9.34 3 1.00 9.34 3.67 2017 6.5 74 NA
4.17 293 968 20176.5 1 9.67 3 1.00 9.67 4.00 2017 6.5 24 NA
4.75 294 969 20176.5 1 10.25 3 1.00 10.25 4.58 2017 6.5 16 NA
2 295 970 20176.5 1.83 6.67 4 1.83 6.67 1.83 2017 6.5 20 NA
3 296 971 20176.5 1.83 7.67 4 1.83 7.67 2.83 2017 6.5 24 NA
3.67 297 972 20176.5 1.83 8.34 4 1.83 8.34 3.50 2017 6.5 0 0
3.84 298 973 20176.5 1.83 8.51 4 1.83 8.51 3.67 2017 6.5 74 NA
4.17 299 974 20176.5 1.83 8.84 4 1.83 8.84 4.00 2017 6.5 24 NA
4.75 300 975 20176.5 1.83 9.42 4 1.83 9.42 4.58 2017 6.5 16 NA
3 301 976 20176.5 2 7.5 5 2.00 7.50 2.83 2017 6.5 24 NA
3.67 302 977 20176.5 2 8.17 5 2.00 8.17 3.50 2017 6.5 0 0
3.84 303 978 20176.5 2 8.34 5 2.00 8.34 3.67 2017 6.5 74 NA
4.17 304 979 20176.5 2 8.67 5 2.00 8.67 4.00 2017 6.5 24 NA
4.75 305 980 20176.5 2 9.25 5 2.00 9.25 4.58 2017 6.5 16 NA
3.67 306 981 20176.5 3 7.17 6 3.00 7.17 3.50 2017 6.5 0 0
3.84 307 982 20176.5 3 7.34 6 3.00 7.34 3.67 2017 6.5 74 NA
4.17 308 983 20176.5 3 7.67 6 3.00 7.67 4.00 2017 6.5 24 NA
4.75 309 984 20176.5 3 8.25 6 3.00 8.25 4.58 2017 6.5 16 NA
3.84 310 985 20176.5 3.67 6.67 7 3.67 6.67 3.67 2017 6.5 74 NA
4.17 311 986 20176.5 3.67 7 7 3.67 7.00 4.00 2017 6.5 24 NA
4.75 312 987 20176.5 3.67 7.58 7 3.67 7.58 4.58 2017 6.5 16 NA
4.17 313 988 20176.5 3.84 6.83 8 3.84 6.83 4.00 2017 6.5 24 NA
4.75 314 989 20176.5 3.84 7.41 8 3.84 7.41 4.58 2017 6.5 16 NA
4.75 315 990 20176.5 4.17 7.08 9 4.17 7.08 4.58 2017 6.5 16 NA
0.17 316 991 20196.5 0 6.67 1 0.00 6.67 0.00 2019 6.5 24 NA
1 317 992 20196.5 0 7.5 1 0.00 7.50 0.83 2019 6.5 36 NA
1.83 318 993 20196.5 0 8.33 1 0.00 8.33 1.66 2019 6.5 0 NA
2 319 994 20196.5 0 8.5 1 0.00 8.50 1.83 2019 6.5 20 NA
3 320 995 20196.5 0 9.5 1 0.00 9.50 2.83 2019 6.5 24 NA
3.67 321 996 20196.5 0 10.17 1 0.00 10.17 3.50 2019 6.5 0 NA
3.84 322 997 20196.5 0 10.34 1 0.00 10.34 3.67 2019 6.5 74 NA
4.17 323 998 20196.5 0 10.67 1 0.00 10.67 4.00 2019 6.5 24 NA
4.75 324 999 20196.5 0 11.25 1 0.00 11.25 4.58 2019 6.5 16 NA
1 325 1000 20196.5 0.17 7.33 2 0.17 7.33 0.83 2019 6.5 36 NA
1.83 326 1001 20196.5 0.17 8.16 2 0.17 8.16 1.66 2019 6.5 0 NA
2 327 1002 20196.5 0.17 8.33 2 0.17 8.33 1.83 2019 6.5 20 NA
3 328 1003 20196.5 0.17 9.33 2 0.17 9.33 2.83 2019 6.5 24 NA
3.67 329 1004 20196.5 0.17 10 2 0.17 10.00 3.50 2019 6.5 0 NA
3.84 330 1005 20196.5 0.17 10.17 2 0.17 10.17 3.67 2019 6.5 74 NA
4.17 331 1006 20196.5 0.17 10.5 2 0.17 10.50 4.00 2019 6.5 24 NA
4.75 332 1007 20196.5 0.17 11.08 2 0.17 11.08 4.58 2019 6.5 16 NA
1.83 333 1008 20196.5 1 7.33 3 1.00 7.33 1.66 2019 6.5 0 NA
2 334 1009 20196.5 1 7.5 3 1.00 7.50 1.83 2019 6.5 20 NA
3 335 1010 20196.5 1 8.5 3 1.00 8.50 2.83 2019 6.5 24 NA
3.67 336 1011 20196.5 1 9.17 3 1.00 9.17 3.50 2019 6.5 0 NA
3.84 337 1012 20196.5 1 9.34 3 1.00 9.34 3.67 2019 6.5 74 NA
4.17 338 1013 20196.5 1 9.67 3 1.00 9.67 4.00 2019 6.5 24 NA
4.75 339 1014 20196.5 1 10.25 3 1.00 10.25 4.58 2019 6.5 16 NA
2 340 1015 20196.5 1.83 6.67 4 1.83 6.67 1.83 2019 6.5 20 NA
3 341 1016 20196.5 1.83 7.67 4 1.83 7.67 2.83 2019 6.5 24 NA
3.67 342 1017 20196.5 1.83 8.34 4 1.83 8.34 3.50 2019 6.5 0 NA
3.84 343 1018 20196.5 1.83 8.51 4 1.83 8.51 3.67 2019 6.5 74 NA
4.17 344 1019 20196.5 1.83 8.84 4 1.83 8.84 4.00 2019 6.5 24 NA
4.75 345 1020 20196.5 1.83 9.42 4 1.83 9.42 4.58 2019 6.5 16 NA
3 346 1021 20196.5 2 7.5 5 2.00 7.50 2.83 2019 6.5 24 NA
3.67 347 1022 20196.5 2 8.17 5 2.00 8.17 3.50 2019 6.5 0 NA
3.84 348 1023 20196.5 2 8.34 5 2.00 8.34 3.67 2019 6.5 74 NA
4.17 349 1024 20196.5 2 8.67 5 2.00 8.67 4.00 2019 6.5 24 NA
4.75 350 1025 20196.5 2 9.25 5 2.00 9.25 4.58 2019 6.5 16 NA
3.67 351 1026 20196.5 3 7.17 6 3.00 7.17 3.50 2019 6.5 0 NA
3.84 352 1027 20196.5 3 7.34 6 3.00 7.34 3.67 2019 6.5 74 NA
4.17 353 1028 20196.5 3 7.67 6 3.00 7.67 4.00 2019 6.5 24 NA
4.75 354 1029 20196.5 3 8.25 6 3.00 8.25 4.58 2019 6.5 16 NA
3.84 355 1030 20196.5 3.67 6.67 7 3.67 6.67 3.67 2019 6.5 74 NA
4.17 356 1031 20196.5 3.67 7 7 3.67 7.00 4.00 2019 6.5 24 NA
4.75 357 1032 20196.5 3.67 7.58 7 3.67 7.58 4.58 2019 6.5 16 NA
4.17 358 1033 20196.5 3.84 6.83 8 3.84 6.83 4.00 2019 6.5 24 NA
4.75 359 1034 20196.5 3.84 7.41 8 3.84 7.41 4.58 2019 6.5 16 NA
4.75 360 1035 20196.5 4.17 7.08 9 4.17 7.08 4.58 2019 6.5 16 NA
0.17 361 1036 20157.5 0 7.67 1 0.00 7.67 0.00 2015 7.5 24 NA
1 362 1037 20157.5 0 8.5 1 0.00 8.50 0.83 2015 7.5 36 NA
1.83 363 1038 20157.5 0 9.33 1 0.00 9.33 1.66 2015 7.5 0 0
2 364 1039 20157.5 0 9.5 1 0.00 9.50 1.83 2015 7.5 20 NA
3 365 1040 20157.5 0 10.5 1 0.00 10.50 2.83 2015 7.5 24 NA
3.67 366 1041 20157.5 0 11.17 1 0.00 11.17 3.50 2015 7.5 0 0
3.84 367 1042 20157.5 0 11.34 1 0.00 11.34 3.67 2015 7.5 74 NA
4.17 368 1043 20157.5 0 11.67 1 0.00 11.67 4.00 2015 7.5 24 NA
4.75 369 1044 20157.5 0 12.25 1 0.00 12.25 4.58 2015 7.5 16 NA
1 370 1045 20157.5 0.17 8.33 2 0.17 8.33 0.83 2015 7.5 36 NA
1.83 371 1046 20157.5 0.17 9.16 2 0.17 9.16 1.66 2015 7.5 0 0
2 372 1047 20157.5 0.17 9.33 2 0.17 9.33 1.83 2015 7.5 20 NA
3 373 1048 20157.5 0.17 10.33 2 0.17 10.33 2.83 2015 7.5 24 NA
3.67 374 1049 20157.5 0.17 11 2 0.17 11.00 3.50 2015 7.5 0 0
3.84 375 1050 20157.5 0.17 11.17 2 0.17 11.17 3.67 2015 7.5 74 NA
4.17 376 1051 20157.5 0.17 11.5 2 0.17 11.50 4.00 2015 7.5 24 NA
4.75 377 1052 20157.5 0.17 12.08 2 0.17 12.08 4.58 2015 7.5 16 NA
1.83 378 1053 20157.5 1 8.33 3 1.00 8.33 1.66 2015 7.5 0 0
2 379 1054 20157.5 1 8.5 3 1.00 8.50 1.83 2015 7.5 20 NA
3 380 1055 20157.5 1 9.5 3 1.00 9.50 2.83 2015 7.5 24 NA
3.67 381 1056 20157.5 1 10.17 3 1.00 10.17 3.50 2015 7.5 0 0
3.84 382 1057 20157.5 1 10.34 3 1.00 10.34 3.67 2015 7.5 74 NA
4.17 383 1058 20157.5 1 10.67 3 1.00 10.67 4.00 2015 7.5 24 NA
4.75 384 1059 20157.5 1 11.25 3 1.00 11.25 4.58 2015 7.5 16 NA
2 385 1060 20157.5 1.83 7.67 4 1.83 7.67 1.83 2015 7.5 20 NA
3 386 1061 20157.5 1.83 8.67 4 1.83 8.67 2.83 2015 7.5 24 NA
3.67 387 1062 20157.5 1.83 9.34 4 1.83 9.34 3.50 2015 7.5 0 0
3.84 388 1063 20157.5 1.83 9.51 4 1.83 9.51 3.67 2015 7.5 74 NA
4.17 389 1064 20157.5 1.83 9.84 4 1.83 9.84 4.00 2015 7.5 24 NA
4.75 390 1065 20157.5 1.83 10.42 4 1.83 10.42 4.58 2015 7.5 16 NA
3 391 1066 20157.5 2 8.5 5 2.00 8.50 2.83 2015 7.5 24 NA
3.67 392 1067 20157.5 2 9.17 5 2.00 9.17 3.50 2015 7.5 0 0
3.84 393 1068 20157.5 2 9.34 5 2.00 9.34 3.67 2015 7.5 74 NA
4.17 394 1069 20157.5 2 9.67 5 2.00 9.67 4.00 2015 7.5 24 NA
4.75 395 1070 20157.5 2 10.25 5 2.00 10.25 4.58 2015 7.5 16 NA
3.67 396 1071 20157.5 3 8.17 6 3.00 8.17 3.50 2015 7.5 0 0
3.84 397 1072 20157.5 3 8.34 6 3.00 8.34 3.67 2015 7.5 74 NA
4.17 398 1073 20157.5 3 8.67 6 3.00 8.67 4.00 2015 7.5 24 NA
4.75 399 1074 20157.5 3 9.25 6 3.00 9.25 4.58 2015 7.5 16 NA
3.84 400 1075 20157.5 3.67 7.67 7 3.67 7.67 3.67 2015 7.5 74 NA
4.17 401 1076 20157.5 3.67 8 7 3.67 8.00 4.00 2015 7.5 24 NA
4.75 402 1077 20157.5 3.67 8.58 7 3.67 8.58 4.58 2015 7.5 16 NA
4.17 403 1078 20157.5 3.84 7.83 8 3.84 7.83 4.00 2015 7.5 24 NA
4.75 404 1079 20157.5 3.84 8.41 8 3.84 8.41 4.58 2015 7.5 16 NA
4.75 405 1080 20157.5 4.17 8.08 9 4.17 8.08 4.58 2015 7.5 16 NA
0.17 406 1081 20177.5 0 7.67 1 0.00 7.67 0.00 2017 7.5 24 NA
1 407 1082 20177.5 0 8.5 1 0.00 8.50 0.83 2017 7.5 36 NA
1.83 408 1083 20177.5 0 9.33 1 0.00 9.33 1.66 2017 7.5 0 NA
2 409 1084 20177.5 0 9.5 1 0.00 9.50 1.83 2017 7.5 20 NA
3 410 1085 20177.5 0 10.5 1 0.00 10.50 2.83 2017 7.5 24 NA
3.67 411 1086 20177.5 0 11.17 1 0.00 11.17 3.50 2017 7.5 0 0
3.84 412 1087 20177.5 0 11.34 1 0.00 11.34 3.67 2017 7.5 74 NA
4.17 413 1088 20177.5 0 11.67 1 0.00 11.67 4.00 2017 7.5 24 NA
4.75 414 1089 20177.5 0 12.25 1 0.00 12.25 4.58 2017 7.5 16 NA
1 415 1090 20177.5 0.17 8.33 2 0.17 8.33 0.83 2017 7.5 36 NA
1.83 416 1091 20177.5 0.17 9.16 2 0.17 9.16 1.66 2017 7.5 0 NA
2 417 1092 20177.5 0.17 9.33 2 0.17 9.33 1.83 2017 7.5 20 NA
3 418 1093 20177.5 0.17 10.33 2 0.17 10.33 2.83 2017 7.5 24 NA
3.67 419 1094 20177.5 0.17 11 2 0.17 11.00 3.50 2017 7.5 0 0
3.84 420 1095 20177.5 0.17 11.17 2 0.17 11.17 3.67 2017 7.5 74 NA
4.17 421 1096 20177.5 0.17 11.5 2 0.17 11.50 4.00 2017 7.5 24 NA
4.75 422 1097 20177.5 0.17 12.08 2 0.17 12.08 4.58 2017 7.5 16 NA
1.83 423 1098 20177.5 1 8.33 3 1.00 8.33 1.66 2017 7.5 0 NA
2 424 1099 20177.5 1 8.5 3 1.00 8.50 1.83 2017 7.5 20 NA
3 425 1100 20177.5 1 9.5 3 1.00 9.50 2.83 2017 7.5 24 NA
3.67 426 1101 20177.5 1 10.17 3 1.00 10.17 3.50 2017 7.5 0 0
3.84 427 1102 20177.5 1 10.34 3 1.00 10.34 3.67 2017 7.5 74 NA
4.17 428 1103 20177.5 1 10.67 3 1.00 10.67 4.00 2017 7.5 24 NA
4.75 429 1104 20177.5 1 11.25 3 1.00 11.25 4.58 2017 7.5 16 NA
2 430 1105 20177.5 1.83 7.67 4 1.83 7.67 1.83 2017 7.5 20 NA
3 431 1106 20177.5 1.83 8.67 4 1.83 8.67 2.83 2017 7.5 24 NA
3.67 432 1107 20177.5 1.83 9.34 4 1.83 9.34 3.50 2017 7.5 0 0
3.84 433 1108 20177.5 1.83 9.51 4 1.83 9.51 3.67 2017 7.5 74 NA
4.17 434 1109 20177.5 1.83 9.84 4 1.83 9.84 4.00 2017 7.5 24 NA
4.75 435 1110 20177.5 1.83 10.42 4 1.83 10.42 4.58 2017 7.5 16 NA
3 436 1111 20177.5 2 8.5 5 2.00 8.50 2.83 2017 7.5 24 NA
3.67 437 1112 20177.5 2 9.17 5 2.00 9.17 3.50 2017 7.5 0 0
3.84 438 1113 20177.5 2 9.34 5 2.00 9.34 3.67 2017 7.5 74 NA
4.17 439 1114 20177.5 2 9.67 5 2.00 9.67 4.00 2017 7.5 24 NA
4.75 440 1115 20177.5 2 10.25 5 2.00 10.25 4.58 2017 7.5 16 NA
3.67 441 1116 20177.5 3 8.17 6 3.00 8.17 3.50 2017 7.5 0 0
3.84 442 1117 20177.5 3 8.34 6 3.00 8.34 3.67 2017 7.5 74 NA
4.17 443 1118 20177.5 3 8.67 6 3.00 8.67 4.00 2017 7.5 24 NA
4.75 444 1119 20177.5 3 9.25 6 3.00 9.25 4.58 2017 7.5 16 NA
3.84 445 1120 20177.5 3.67 7.67 7 3.67 7.67 3.67 2017 7.5 74 NA
4.17 446 1121 20177.5 3.67 8 7 3.67 8.00 4.00 2017 7.5 24 NA
4.75 447 1122 20177.5 3.67 8.58 7 3.67 8.58 4.58 2017 7.5 16 NA
4.17 448 1123 20177.5 3.84 7.83 8 3.84 7.83 4.00 2017 7.5 24 NA
4.75 449 1124 20177.5 3.84 8.41 8 3.84 8.41 4.58 2017 7.5 16 NA
4.75 450 1125 20177.5 4.17 8.08 9 4.17 8.08 4.58 2017 7.5 16 NA
0.17 451 1126 20197.5 0 7.67 1 0.00 7.67 0.00 2019 7.5 24 NA
1 452 1127 20197.5 0 8.5 1 0.00 8.50 0.83 2019 7.5 36 NA
1.83 453 1128 20197.5 0 9.33 1 0.00 9.33 1.66 2019 7.5 0 NA
2 454 1129 20197.5 0 9.5 1 0.00 9.50 1.83 2019 7.5 20 NA
3 455 1130 20197.5 0 10.5 1 0.00 10.50 2.83 2019 7.5 24 NA
3.67 456 1131 20197.5 0 11.17 1 0.00 11.17 3.50 2019 7.5 0 NA
3.84 457 1132 20197.5 0 11.34 1 0.00 11.34 3.67 2019 7.5 74 NA
4.17 458 1133 20197.5 0 11.67 1 0.00 11.67 4.00 2019 7.5 24 NA
4.75 459 1134 20197.5 0 12.25 1 0.00 12.25 4.58 2019 7.5 16 NA
1 460 1135 20197.5 0.17 8.33 2 0.17 8.33 0.83 2019 7.5 36 NA
1.83 461 1136 20197.5 0.17 9.16 2 0.17 9.16 1.66 2019 7.5 0 NA
2 462 1137 20197.5 0.17 9.33 2 0.17 9.33 1.83 2019 7.5 20 NA
3 463 1138 20197.5 0.17 10.33 2 0.17 10.33 2.83 2019 7.5 24 NA
3.67 464 1139 20197.5 0.17 11 2 0.17 11.00 3.50 2019 7.5 0 NA
3.84 465 1140 20197.5 0.17 11.17 2 0.17 11.17 3.67 2019 7.5 74 NA
4.17 466 1141 20197.5 0.17 11.5 2 0.17 11.50 4.00 2019 7.5 24 NA
4.75 467 1142 20197.5 0.17 12.08 2 0.17 12.08 4.58 2019 7.5 16 NA
1.83 468 1143 20197.5 1 8.33 3 1.00 8.33 1.66 2019 7.5 0 NA
2 469 1144 20197.5 1 8.5 3 1.00 8.50 1.83 2019 7.5 20 NA
3 470 1145 20197.5 1 9.5 3 1.00 9.50 2.83 2019 7.5 24 NA
3.67 471 1146 20197.5 1 10.17 3 1.00 10.17 3.50 2019 7.5 0 NA
3.84 472 1147 20197.5 1 10.34 3 1.00 10.34 3.67 2019 7.5 74 NA
4.17 473 1148 20197.5 1 10.67 3 1.00 10.67 4.00 2019 7.5 24 NA
4.75 474 1149 20197.5 1 11.25 3 1.00 11.25 4.58 2019 7.5 16 NA
2 475 1150 20197.5 1.83 7.67 4 1.83 7.67 1.83 2019 7.5 20 NA
3 476 1151 20197.5 1.83 8.67 4 1.83 8.67 2.83 2019 7.5 24 NA
3.67 477 1152 20197.5 1.83 9.34 4 1.83 9.34 3.50 2019 7.5 0 NA
3.84 478 1153 20197.5 1.83 9.51 4 1.83 9.51 3.67 2019 7.5 74 NA
4.17 479 1154 20197.5 1.83 9.84 4 1.83 9.84 4.00 2019 7.5 24 NA
4.75 480 1155 20197.5 1.83 10.42 4 1.83 10.42 4.58 2019 7.5 16 NA
3 481 1156 20197.5 2 8.5 5 2.00 8.50 2.83 2019 7.5 24 NA
3.67 482 1157 20197.5 2 9.17 5 2.00 9.17 3.50 2019 7.5 0 NA
3.84 483 1158 20197.5 2 9.34 5 2.00 9.34 3.67 2019 7.5 74 NA
4.17 484 1159 20197.5 2 9.67 5 2.00 9.67 4.00 2019 7.5 24 NA
4.75 485 1160 20197.5 2 10.25 5 2.00 10.25 4.58 2019 7.5 16 NA
3.67 486 1161 20197.5 3 8.17 6 3.00 8.17 3.50 2019 7.5 0 NA
3.84 487 1162 20197.5 3 8.34 6 3.00 8.34 3.67 2019 7.5 74 NA
4.17 488 1163 20197.5 3 8.67 6 3.00 8.67 4.00 2019 7.5 24 NA
4.75 489 1164 20197.5 3 9.25 6 3.00 9.25 4.58 2019 7.5 16 NA
3.84 490 1165 20197.5 3.67 7.67 7 3.67 7.67 3.67 2019 7.5 74 NA
4.17 491 1166 20197.5 3.67 8 7 3.67 8.00 4.00 2019 7.5 24 NA
4.75 492 1167 20197.5 3.67 8.58 7 3.67 8.58 4.58 2019 7.5 16 NA
4.17 493 1168 20197.5 3.84 7.83 8 3.84 7.83 4.00 2019 7.5 24 NA
4.75 494 1169 20197.5 3.84 8.41 8 3.84 8.41 4.58 2019 7.5 16 NA
4.75 495 1170 20197.5 4.17 8.08 9 4.17 8.08 4.58 2019 7.5 16 NA
0.17 496 1171 20158.5 0 8.67 1 0.00 8.67 0.00 2015 8.5 24 NA
1 497 1172 20158.5 0 9.5 1 0.00 9.50 0.83 2015 8.5 36 NA
1.83 498 1173 20158.5 0 10.33 1 0.00 10.33 1.66 2015 8.5 0 0
2 499 1174 20158.5 0 10.5 1 0.00 10.50 1.83 2015 8.5 20 NA
3 500 1175 20158.5 0 11.5 1 0.00 11.50 2.83 2015 8.5 24 NA
3.67 501 1176 20158.5 0 12.17 1 0.00 12.17 3.50 2015 8.5 0 0
3.84 502 1177 20158.5 0 12.34 1 0.00 12.34 3.67 2015 8.5 74 NA
4.17 503 1178 20158.5 0 12.67 1 0.00 12.67 4.00 2015 8.5 24 NA
4.75 504 1179 20158.5 0 13.25 1 0.00 13.25 4.58 2015 8.5 16 NA
1 505 1180 20158.5 0.17 9.33 2 0.17 9.33 0.83 2015 8.5 36 NA
1.83 506 1181 20158.5 0.17 10.16 2 0.17 10.16 1.66 2015 8.5 0 0
2 507 1182 20158.5 0.17 10.33 2 0.17 10.33 1.83 2015 8.5 20 NA
3 508 1183 20158.5 0.17 11.33 2 0.17 11.33 2.83 2015 8.5 24 NA
3.67 509 1184 20158.5 0.17 12 2 0.17 12.00 3.50 2015 8.5 0 0
3.84 510 1185 20158.5 0.17 12.17 2 0.17 12.17 3.67 2015 8.5 74 NA
4.17 511 1186 20158.5 0.17 12.5 2 0.17 12.50 4.00 2015 8.5 24 NA
4.75 512 1187 20158.5 0.17 13.08 2 0.17 13.08 4.58 2015 8.5 16 NA
1.83 513 1188 20158.5 1 9.33 3 1.00 9.33 1.66 2015 8.5 0 0
2 514 1189 20158.5 1 9.5 3 1.00 9.50 1.83 2015 8.5 20 NA
3 515 1190 20158.5 1 10.5 3 1.00 10.50 2.83 2015 8.5 24 NA
3.67 516 1191 20158.5 1 11.17 3 1.00 11.17 3.50 2015 8.5 0 0
3.84 517 1192 20158.5 1 11.34 3 1.00 11.34 3.67 2015 8.5 74 NA
4.17 518 1193 20158.5 1 11.67 3 1.00 11.67 4.00 2015 8.5 24 NA
4.75 519 1194 20158.5 1 12.25 3 1.00 12.25 4.58 2015 8.5 16 NA
2 520 1195 20158.5 1.83 8.67 4 1.83 8.67 1.83 2015 8.5 20 NA
3 521 1196 20158.5 1.83 9.67 4 1.83 9.67 2.83 2015 8.5 24 NA
3.67 522 1197 20158.5 1.83 10.34 4 1.83 10.34 3.50 2015 8.5 0 0
3.84 523 1198 20158.5 1.83 10.51 4 1.83 10.51 3.67 2015 8.5 74 NA
4.17 524 1199 20158.5 1.83 10.84 4 1.83 10.84 4.00 2015 8.5 24 NA
4.75 525 1200 20158.5 1.83 11.42 4 1.83 11.42 4.58 2015 8.5 16 NA
3 526 1201 20158.5 2 9.5 5 2.00 9.50 2.83 2015 8.5 24 NA
3.67 527 1202 20158.5 2 10.17 5 2.00 10.17 3.50 2015 8.5 0 0
3.84 528 1203 20158.5 2 10.34 5 2.00 10.34 3.67 2015 8.5 74 NA
4.17 529 1204 20158.5 2 10.67 5 2.00 10.67 4.00 2015 8.5 24 NA
4.75 530 1205 20158.5 2 11.25 5 2.00 11.25 4.58 2015 8.5 16 NA
3.67 531 1206 20158.5 3 9.17 6 3.00 9.17 3.50 2015 8.5 0 0
3.84 532 1207 20158.5 3 9.34 6 3.00 9.34 3.67 2015 8.5 74 NA
4.17 533 1208 20158.5 3 9.67 6 3.00 9.67 4.00 2015 8.5 24 NA
4.75 534 1209 20158.5 3 10.25 6 3.00 10.25 4.58 2015 8.5 16 NA
3.84 535 1210 20158.5 3.67 8.67 7 3.67 8.67 3.67 2015 8.5 74 NA
4.17 536 1211 20158.5 3.67 9 7 3.67 9.00 4.00 2015 8.5 24 NA
4.75 537 1212 20158.5 3.67 9.58 7 3.67 9.58 4.58 2015 8.5 16 NA
4.17 538 1213 20158.5 3.84 8.83 8 3.84 8.83 4.00 2015 8.5 24 NA
4.75 539 1214 20158.5 3.84 9.41 8 3.84 9.41 4.58 2015 8.5 16 NA
4.75 540 1215 20158.5 4.17 9.08 9 4.17 9.08 4.58 2015 8.5 16 NA
0.17 541 1216 20198.5 0 8.67 1 0.00 8.67 0.00 2019 8.5 24 NA
1 542 1217 20198.5 0 9.5 1 0.00 9.50 0.83 2019 8.5 36 NA
1.83 543 1218 20198.5 0 10.33 1 0.00 10.33 1.66 2019 8.5 0 NA
2 544 1219 20198.5 0 10.5 1 0.00 10.50 1.83 2019 8.5 20 NA
3 545 1220 20198.5 0 11.5 1 0.00 11.50 2.83 2019 8.5 24 NA
3.67 546 1221 20198.5 0 12.17 1 0.00 12.17 3.50 2019 8.5 0 NA
3.84 547 1222 20198.5 0 12.34 1 0.00 12.34 3.67 2019 8.5 74 NA
4.17 548 1223 20198.5 0 12.67 1 0.00 12.67 4.00 2019 8.5 24 NA
4.75 549 1224 20198.5 0 13.25 1 0.00 13.25 4.58 2019 8.5 16 NA
1 550 1225 20198.5 0.17 9.33 2 0.17 9.33 0.83 2019 8.5 36 NA
1.83 551 1226 20198.5 0.17 10.16 2 0.17 10.16 1.66 2019 8.5 0 NA
2 552 1227 20198.5 0.17 10.33 2 0.17 10.33 1.83 2019 8.5 20 NA
3 553 1228 20198.5 0.17 11.33 2 0.17 11.33 2.83 2019 8.5 24 NA
3.67 554 1229 20198.5 0.17 12 2 0.17 12.00 3.50 2019 8.5 0 NA
3.84 555 1230 20198.5 0.17 12.17 2 0.17 12.17 3.67 2019 8.5 74 NA
4.17 556 1231 20198.5 0.17 12.5 2 0.17 12.50 4.00 2019 8.5 24 NA
4.75 557 1232 20198.5 0.17 13.08 2 0.17 13.08 4.58 2019 8.5 16 NA
1.83 558 1233 20198.5 1 9.33 3 1.00 9.33 1.66 2019 8.5 0 NA
2 559 1234 20198.5 1 9.5 3 1.00 9.50 1.83 2019 8.5 20 NA
3 560 1235 20198.5 1 10.5 3 1.00 10.50 2.83 2019 8.5 24 NA
3.67 561 1236 20198.5 1 11.17 3 1.00 11.17 3.50 2019 8.5 0 NA
3.84 562 1237 20198.5 1 11.34 3 1.00 11.34 3.67 2019 8.5 74 NA
4.17 563 1238 20198.5 1 11.67 3 1.00 11.67 4.00 2019 8.5 24 NA
4.75 564 1239 20198.5 1 12.25 3 1.00 12.25 4.58 2019 8.5 16 NA
2 565 1240 20198.5 1.83 8.67 4 1.83 8.67 1.83 2019 8.5 20 NA
3 566 1241 20198.5 1.83 9.67 4 1.83 9.67 2.83 2019 8.5 24 NA
3.67 567 1242 20198.5 1.83 10.34 4 1.83 10.34 3.50 2019 8.5 0 NA
3.84 568 1243 20198.5 1.83 10.51 4 1.83 10.51 3.67 2019 8.5 74 NA
4.17 569 1244 20198.5 1.83 10.84 4 1.83 10.84 4.00 2019 8.5 24 NA
4.75 570 1245 20198.5 1.83 11.42 4 1.83 11.42 4.58 2019 8.5 16 NA
3 571 1246 20198.5 2 9.5 5 2.00 9.50 2.83 2019 8.5 24 NA
3.67 572 1247 20198.5 2 10.17 5 2.00 10.17 3.50 2019 8.5 0 NA
3.84 573 1248 20198.5 2 10.34 5 2.00 10.34 3.67 2019 8.5 74 NA
4.17 574 1249 20198.5 2 10.67 5 2.00 10.67 4.00 2019 8.5 24 NA
4.75 575 1250 20198.5 2 11.25 5 2.00 11.25 4.58 2019 8.5 16 NA
3.67 576 1251 20198.5 3 9.17 6 3.00 9.17 3.50 2019 8.5 0 NA
3.84 577 1252 20198.5 3 9.34 6 3.00 9.34 3.67 2019 8.5 74 NA
4.17 578 1253 20198.5 3 9.67 6 3.00 9.67 4.00 2019 8.5 24 NA
4.75 579 1254 20198.5 3 10.25 6 3.00 10.25 4.58 2019 8.5 16 NA
3.84 580 1255 20198.5 3.67 8.67 7 3.67 8.67 3.67 2019 8.5 74 NA
4.17 581 1256 20198.5 3.67 9 7 3.67 9.00 4.00 2019 8.5 24 NA
4.75 582 1257 20198.5 3.67 9.58 7 3.67 9.58 4.58 2019 8.5 16 NA
4.17 583 1258 20198.5 3.84 8.83 8 3.84 8.83 4.00 2019 8.5 24 NA
4.75 584 1259 20198.5 3.84 9.41 8 3.84 9.41 4.58 2019 8.5 16 NA
4.75 585 1260 20198.5 4.17 9.08 9 4.17 9.08 4.58 2019 8.5 16 NA
0.17 586 1261 20159.5 0 9.67 1 0.00 9.67 0.00 2015 9.5 24 NA
1 587 1262 20159.5 0 10.5 1 0.00 10.50 0.83 2015 9.5 36 NA
1.83 588 1263 20159.5 0 11.33 1 0.00 11.33 1.66 2015 9.5 0 0
2 589 1264 20159.5 0 11.5 1 0.00 11.50 1.83 2015 9.5 20 NA
3 590 1265 20159.5 0 12.5 1 0.00 12.50 2.83 2015 9.5 24 NA
3.67 591 1266 20159.5 0 13.17 1 0.00 13.17 3.50 2015 9.5 0 0
3.84 592 1267 20159.5 0 13.34 1 0.00 13.34 3.67 2015 9.5 74 NA
4.17 593 1268 20159.5 0 13.67 1 0.00 13.67 4.00 2015 9.5 24 NA
4.75 594 1269 20159.5 0 14.25 1 0.00 14.25 4.58 2015 9.5 16 NA
1 595 1270 20159.5 0.17 10.33 2 0.17 10.33 0.83 2015 9.5 36 NA
1.83 596 1271 20159.5 0.17 11.16 2 0.17 11.16 1.66 2015 9.5 0 0
2 597 1272 20159.5 0.17 11.33 2 0.17 11.33 1.83 2015 9.5 20 NA
3 598 1273 20159.5 0.17 12.33 2 0.17 12.33 2.83 2015 9.5 24 NA
3.67 599 1274 20159.5 0.17 13 2 0.17 13.00 3.50 2015 9.5 0 0
3.84 600 1275 20159.5 0.17 13.17 2 0.17 13.17 3.67 2015 9.5 74 NA
4.17 601 1276 20159.5 0.17 13.5 2 0.17 13.50 4.00 2015 9.5 24 NA
4.75 602 1277 20159.5 0.17 14.08 2 0.17 14.08 4.58 2015 9.5 16 NA
1.83 603 1278 20159.5 1 10.33 3 1.00 10.33 1.66 2015 9.5 0 0
2 604 1279 20159.5 1 10.5 3 1.00 10.50 1.83 2015 9.5 20 NA
3 605 1280 20159.5 1 11.5 3 1.00 11.50 2.83 2015 9.5 24 NA
3.67 606 1281 20159.5 1 12.17 3 1.00 12.17 3.50 2015 9.5 0 0
3.84 607 1282 20159.5 1 12.34 3 1.00 12.34 3.67 2015 9.5 74 NA
4.17 608 1283 20159.5 1 12.67 3 1.00 12.67 4.00 2015 9.5 24 NA
4.75 609 1284 20159.5 1 13.25 3 1.00 13.25 4.58 2015 9.5 16 NA
2 610 1285 20159.5 1.83 9.67 4 1.83 9.67 1.83 2015 9.5 20 NA
3 611 1286 20159.5 1.83 10.67 4 1.83 10.67 2.83 2015 9.5 24 NA
3.67 612 1287 20159.5 1.83 11.34 4 1.83 11.34 3.50 2015 9.5 0 0
3.84 613 1288 20159.5 1.83 11.51 4 1.83 11.51 3.67 2015 9.5 74 NA
4.17 614 1289 20159.5 1.83 11.84 4 1.83 11.84 4.00 2015 9.5 24 NA
4.75 615 1290 20159.5 1.83 12.42 4 1.83 12.42 4.58 2015 9.5 16 NA
3 616 1291 20159.5 2 10.5 5 2.00 10.50 2.83 2015 9.5 24 NA
3.67 617 1292 20159.5 2 11.17 5 2.00 11.17 3.50 2015 9.5 0 0
3.84 618 1293 20159.5 2 11.34 5 2.00 11.34 3.67 2015 9.5 74 NA
4.17 619 1294 20159.5 2 11.67 5 2.00 11.67 4.00 2015 9.5 24 NA
4.75 620 1295 20159.5 2 12.25 5 2.00 12.25 4.58 2015 9.5 16 NA
3.67 621 1296 20159.5 3 10.17 6 3.00 10.17 3.50 2015 9.5 0 0
3.84 622 1297 20159.5 3 10.34 6 3.00 10.34 3.67 2015 9.5 74 NA
4.17 623 1298 20159.5 3 10.67 6 3.00 10.67 4.00 2015 9.5 24 NA
4.75 624 1299 20159.5 3 11.25 6 3.00 11.25 4.58 2015 9.5 16 NA
3.84 625 1300 20159.5 3.67 9.67 7 3.67 9.67 3.67 2015 9.5 74 NA
4.17 626 1301 20159.5 3.67 10 7 3.67 10.00 4.00 2015 9.5 24 NA
4.75 627 1302 20159.5 3.67 10.58 7 3.67 10.58 4.58 2015 9.5 16 NA
4.17 628 1303 20159.5 3.84 9.83 8 3.84 9.83 4.00 2015 9.5 24 NA
4.75 629 1304 20159.5 3.84 10.41 8 3.84 10.41 4.58 2015 9.5 16 NA
4.75 630 1305 20159.5 4.17 10.08 9 4.17 10.08 4.58 2015 9.5 16 NA
0.17 631 1306 201510.5 0 10.67 1 0.00 10.67 0.00 2015 10.5 24 NA
1 632 1307 201510.5 0 11.5 1 0.00 11.50 0.83 2015 10.5 36 NA
1.83 633 1308 201510.5 0 12.33 1 0.00 12.33 1.66 2015 10.5 0 0
2 634 1309 201510.5 0 12.5 1 0.00 12.50 1.83 2015 10.5 20 NA
3 635 1310 201510.5 0 13.5 1 0.00 13.50 2.83 2015 10.5 24 NA
3.67 636 1311 201510.5 0 14.17 1 0.00 14.17 3.50 2015 10.5 0 0
3.84 637 1312 201510.5 0 14.34 1 0.00 14.34 3.67 2015 10.5 74 NA
4.17 638 1313 201510.5 0 14.67 1 0.00 14.67 4.00 2015 10.5 24 NA
4.75 639 1314 201510.5 0 15.25 1 0.00 15.25 4.58 2015 10.5 16 NA
1 640 1315 201510.5 0.17 11.33 2 0.17 11.33 0.83 2015 10.5 36 NA
1.83 641 1316 201510.5 0.17 12.16 2 0.17 12.16 1.66 2015 10.5 0 0
2 642 1317 201510.5 0.17 12.33 2 0.17 12.33 1.83 2015 10.5 20 NA
3 643 1318 201510.5 0.17 13.33 2 0.17 13.33 2.83 2015 10.5 24 NA
3.67 644 1319 201510.5 0.17 14 2 0.17 14.00 3.50 2015 10.5 0 0
3.84 645 1320 201510.5 0.17 14.17 2 0.17 14.17 3.67 2015 10.5 74 NA
4.17 646 1321 201510.5 0.17 14.5 2 0.17 14.50 4.00 2015 10.5 24 NA
4.75 647 1322 201510.5 0.17 15.08 2 0.17 15.08 4.58 2015 10.5 16 NA
1.83 648 1323 201510.5 1 11.33 3 1.00 11.33 1.66 2015 10.5 0 0
2 649 1324 201510.5 1 11.5 3 1.00 11.50 1.83 2015 10.5 20 NA
3 650 1325 201510.5 1 12.5 3 1.00 12.50 2.83 2015 10.5 24 NA
3.67 651 1326 201510.5 1 13.17 3 1.00 13.17 3.50 2015 10.5 0 0
3.84 652 1327 201510.5 1 13.34 3 1.00 13.34 3.67 2015 10.5 74 NA
4.17 653 1328 201510.5 1 13.67 3 1.00 13.67 4.00 2015 10.5 24 NA
4.75 654 1329 201510.5 1 14.25 3 1.00 14.25 4.58 2015 10.5 16 NA
2 655 1330 201510.5 1.83 10.67 4 1.83 10.67 1.83 2015 10.5 20 NA
3 656 1331 201510.5 1.83 11.67 4 1.83 11.67 2.83 2015 10.5 24 NA
3.67 657 1332 201510.5 1.83 12.34 4 1.83 12.34 3.50 2015 10.5 0 0
3.84 658 1333 201510.5 1.83 12.51 4 1.83 12.51 3.67 2015 10.5 74 NA
4.17 659 1334 201510.5 1.83 12.84 4 1.83 12.84 4.00 2015 10.5 24 NA
4.75 660 1335 201510.5 1.83 13.42 4 1.83 13.42 4.58 2015 10.5 16 NA
3 661 1336 201510.5 2 11.5 5 2.00 11.50 2.83 2015 10.5 24 NA
3.67 662 1337 201510.5 2 12.17 5 2.00 12.17 3.50 2015 10.5 0 0
3.84 663 1338 201510.5 2 12.34 5 2.00 12.34 3.67 2015 10.5 74 NA
4.17 664 1339 201510.5 2 12.67 5 2.00 12.67 4.00 2015 10.5 24 NA
4.75 665 1340 201510.5 2 13.25 5 2.00 13.25 4.58 2015 10.5 16 NA
3.67 666 1341 201510.5 3 11.17 6 3.00 11.17 3.50 2015 10.5 0 0
3.84 667 1342 201510.5 3 11.34 6 3.00 11.34 3.67 2015 10.5 74 NA
4.17 668 1343 201510.5 3 11.67 6 3.00 11.67 4.00 2015 10.5 24 NA
4.75 669 1344 201510.5 3 12.25 6 3.00 12.25 4.58 2015 10.5 16 NA
3.84 670 1345 201510.5 3.67 10.67 7 3.67 10.67 3.67 2015 10.5 74 NA
4.17 671 1346 201510.5 3.67 11 7 3.67 11.00 4.00 2015 10.5 24 NA
4.75 672 1347 201510.5 3.67 11.58 7 3.67 11.58 4.58 2015 10.5 16 NA
4.17 673 1348 201510.5 3.84 10.83 8 3.84 10.83 4.00 2015 10.5 24 NA
4.75 674 1349 201510.5 3.84 11.41 8 3.84 11.41 4.58 2015 10.5 16 NA
4.75 675 1350 201510.5 4.17 11.08 9 4.17 11.08 4.58 2015 10.5 16 NA


Now let’s build models. We’ll consider four possible survival models in which survival varies temporaly, by release size, or release cohort. We’ll also consider whether detection varies by year or effort.

We’ll run all combinations of these models as well as nulls—Phi(.) and p(.)—for a total of 16 CJS models.

# apparent survival (Phi)
Phi.dot = list(formula=~1)
Phi.time = list(formula=~time)
Phi.length = list(formula=~length)
Phi.cohort = list(formula=~release_cohort)

# detection (p)
p.dot = list(formula=~1)
p.time = list(formula=~time)
p.effort = list(formula=~effort)
p.length = list(formula=~length)

Let’s first examine goodness of fit for our data before ranking models.

RGOF <- release.gof(tortoises.process)
RGOF
##       Chi.square df      P
## TEST2    45.5195 38 0.1876
## TEST3     0.0000  0 1.0000
## Total    45.5195 38 0.1876
chat <- RGOF$Chi.square[3]/RGOF$df[3]
chat
## [1] 1.197882

There is no lack of model fit. We’ll still account for slight overdispersion with c-hat.

Model outcomes

# make and model list
tortoises.list <- create.model.list("CJS")

tortoises.results <- mark.wrapper(tortoises.list,
                                  data=tortoises.process,
                                  ddl=tortoises.ddl,
                                  output = FALSE)

tortoises.results <- adjust.chat(chat, tortoises.results)
aic.table.tortoises <- model.table(tortoises.results, 
                                   use.lnl = TRUE, use.AIC = TRUE)
aic.table.tortoises$model <- gsub("~", "", aic.table.tortoises$model)
aic.table.tortoises$model <- gsub("1", ".", aic.table.tortoises$model)
aic.table.tortoises$model <- gsub(")", ") ", aic.table.tortoises$model)

kable(aic.table.tortoises[,3:8], "html", 
      caption = "AIC tortoise model rankings", digits = 3) %>% 
  kable_styling(bootstrap_options = c("striped", "condensed")) %>%
  scroll_box(height = "300px")
AIC tortoise model rankings
model npar QAIC DeltaQAIC weight Neg2LnL
8 Phi(.) p(time) 10 2989.460 0.000 0.559 3557.062
12 Phi(length) p(time) 11 2990.930 1.470 0.268 3556.426
4 Phi(release_cohort) p(time) 12 2992.086 2.626 0.150 3555.416
16 Phi(time) p(time) 18 2995.925 6.465 0.022 3545.640
14 Phi(time) p(effort) 11 3010.554 21.094 0.000 3579.934
13 Phi(time) p(.) 10 3014.530 25.070 0.000 3587.093
15 Phi(time) p(length) 11 3015.730 26.270 0.000 3586.134
2 Phi(release_cohort) p(effort) 5 3072.485 83.025 0.000 3668.494
6 Phi(.) p(effort) 3 3075.496 86.036 0.000 3676.892
10 Phi(length) p(effort) 4 3077.215 87.754 0.000 3676.556
3 Phi(release_cohort) p(length) 5 3101.685 112.224 0.000 3703.472
1 Phi(release_cohort) p(.) 4 3101.869 112.408 0.000 3706.088
5 Phi(.) p(.) 2 3110.692 121.232 0.000 3721.449
7 Phi(.) p(length) 3 3111.162 121.702 0.000 3719.617
11 Phi(length) p(length) 4 3112.369 122.909 0.000 3718.666
9 Phi(length) p(.) 3 3112.439 122.978 0.000 3721.146
write.csv(aic.table.tortoises[,3:8], "data/santafe_CJS_aictab_2020.csv")


It doesn’t look like any variable strongly influences survival, as the top survival model is the null model Phi(.). There is some strong evidence for time-varying detection, but not much support for effort as a driver of detection variability.

Let’s look at what the top model says about apparent survival.

# beta estimates
kable(tortoises.results$Phi.dot.p.time$results$beta, "html", 
      caption = "Beta estimates of Phi(.)p(time)") %>% 
  kable_styling(bootstrap_options = c("striped", "condensed"))
Beta estimates of Phi(.)p(time)
estimate se lcl ucl
Phi:(Intercept) 2.8733159 0.1560346 2.5674880 3.1791438
p:(Intercept) 0.2111451 0.1420148 -0.0672039 0.4894942
p:time1 1.0561319 0.2260769 0.6130213 1.4992426
p:time1.83 -0.0999540 399.5444200 -783.2070300 783.0071200
p:time2 0.5895949 0.1815080 0.2338393 0.9453506
p:time3 1.0517683 0.1938112 0.6718983 1.4316383
p:time3.67 -0.0999886 399.5570000 -783.2317200 783.0317500
p:time3.84 0.8279971 0.1794259 0.4763224 1.1796718
p:time4.17 0.2919220 0.1737210 -0.0485712 0.6324152
p:time4.75 -0.5501735 0.1731062 -0.8894616 -0.2108853
# real estimates
kable(tortoises.results$Phi.dot.p.time$results$real, "html", 
      caption = "Real estimates of Phi(.)p(time)") %>% 
  kable_styling(bootstrap_options = c("striped", "condensed"))
Real estimates of Phi(.)p(time)
estimate se lcl ucl fixed note
Phi g20154.5 c0 a4.5 t0 0.9465115 0.0078996 0.9287396 0.9600418
p g20154.5 c0 a4.67 t0.17 0.5525910 0.0351109 0.4832053 0.6199873
p g20154.5 c0 a5.5 t1 0.7802763 0.0302776 0.7152737 0.8338853
p g20174.5 c0 a6.33 t1.83 0.5277692 99.5780110 0.0000000 1.0000000
p g20154.5 c0 a6.5 t2 0.6901328 0.0241988 0.6408257 0.7354652
p g20154.5 c0 a7.5 t3 0.7795272 0.0226773 0.7319020 0.8207641
p g20195.5 c0 a9.17 t3.67 0.5277606 99.5813480 0.0000000 1.0000000
p g20154.5 c0 a8.34 t3.84 0.7386845 0.0211789 0.6951047 0.7780244
p g20154.5 c0 a8.67 t4.17 0.6231799 0.0235085 0.5761165 0.6680288
p g20154.5 c0 a9.25 t4.75 0.4160455 0.0240607 0.3697856 0.4638333
p g20154.5 c0 a6.33 t1.83 0.0000000 0.0000000 0.0000000 0.0000000 Fixed


The model states there is an overall annual survival rate of 0.947.

Because there was model uncertainty, we should still model average to plot our survival estimates.

# survival
tortoises.mod.avg.phi <- model.average(tortoises.results,"Phi", vcv=TRUE, drop = FALSE)
tortoises.mod.avg.phi.unique <- unique(tortoises.mod.avg.phi$estimates[,2:5])

kable(tortoises.mod.avg.phi.unique, "html", 
      caption = "Model-averaged Phi estimates") %>% 
  kable_styling(bootstrap_options = c("striped", "condensed")) %>% 
  scroll_box(height = "300px")
Model-averaged Phi estimates
estimate se lcl ucl
Phi g20154.5 c0 a4.5 t0 0.9438413 0.0214413 0.8838025 0.9737787
Phi g20154.5 c0 a4.67 t0.17 0.9463811 0.0102846 0.9222636 0.9633139
Phi g20154.5 c0 a5.5 t1 0.9469669 0.0118273 0.9183969 0.9659055
Phi g20154.5 c0 a6.33 t1.83 0.9432798 0.0228634 0.8780059 0.9746373
Phi g20154.5 c0 a6.5 t2 0.9463782 0.0100616 0.9228759 0.9630056
Phi g20154.5 c0 a7.5 t3 0.9442878 0.0153745 0.9052906 0.9677987
Phi g20154.5 c0 a8.17 t3.67 0.9469670 0.0118271 0.9183976 0.9659054
Phi g20154.5 c0 a8.34 t3.84 0.9469641 0.0118397 0.9183580 0.9659190
Phi g20154.5 c0 a8.67 t4.17 0.9365481 4.0955741 0.0000000 1.0000000
Phi g20174.5 c0 a4.5 t0 0.9461196 0.0221034 0.8824435 0.9762336
Phi g20174.5 c0 a4.67 t0.17 0.9486594 0.0110919 0.9220268 0.9665256
Phi g20174.5 c0 a5.5 t1 0.9492451 0.0124288 0.9185677 0.9687587
Phi g20174.5 c0 a6.33 t1.83 0.9455581 0.0235399 0.8763583 0.9770427
Phi g20174.5 c0 a6.5 t2 0.9486565 0.0108862 0.9226174 0.9662540
Phi g20174.5 c0 a7.5 t3 0.9465660 0.0162226 0.9042839 0.9707739
Phi g20174.5 c0 a8.17 t3.67 0.9492452 0.0124286 0.9185684 0.9687586
Phi g20174.5 c0 a8.34 t3.84 0.9492424 0.0124412 0.9185277 0.9687714
Phi g20174.5 c0 a8.67 t4.17 0.9388264 4.0955817 0.0000000 1.0000000
Phi g20195.5 c0 a5.5 t0 0.9525144 0.0288849 0.8515767 0.9859410
Phi g20195.5 c0 a5.67 t0.17 0.9550542 0.0208884 0.8911515 0.9821907
Phi g20195.5 c0 a6.5 t1 0.9556399 0.0214541 0.8887595 0.9830759
Phi g20195.5 c0 a7.33 t1.83 0.9519529 0.0301179 0.8449774 0.9863049
Phi g20195.5 c0 a7.5 t2 0.9550513 0.0207808 0.8916263 0.9821023
Phi g20195.5 c0 a8.5 t3 0.9529608 0.0245610 0.8737694 0.9834141
Phi g20195.5 c0 a9.17 t3.67 0.9556400 0.0214539 0.8887603 0.9830759
Phi g20195.5 c0 a9.34 t3.84 0.9556371 0.0214621 0.8887223 0.9830800
Phi g20195.5 c0 a9.67 t4.17 0.9452212 4.0956353 0.0000000 1.0000000
# detection
# remove the fully time dependent model: Phi(time)p(time)
# so we can estimate the variance for detection in the last occasion
tortoises.results.omit <- remove.mark(tortoises.results, 16)
tortoises.mod.avg.p <- model.average(tortoises.results.omit, "p", 
                                     vcv=TRUE, drop = FALSE)
tortoises.mod.avg.p.unique <- unique(tortoises.mod.avg.p$estimates[,2:5])

kable(tortoises.mod.avg.p.unique, "html", 
      caption = "Model-averaged p estimates") %>% 
  kable_styling(bootstrap_options = c("striped", "condensed"))
Model-averaged p estimates
estimate se lcl ucl
p g20154.5 c0 a4.67 t0.17 0.5525945 0.0384326 0.4766376 0.6261736
p g20154.5 c0 a5.5 t1 0.7802715 0.0331396 0.7085604 0.8383628
p g20154.5 c0 a6.33 t1.83 0.0000000 0.0000000 0.0000000 0.0000000
p g20154.5 c0 a6.5 t2 0.6901172 0.0264839 0.6359769 0.7395034
p g20154.5 c0 a7.5 t3 0.7794498 0.0248293 0.7269848 0.8242698
p g20154.5 c0 a8.34 t3.84 0.7381662 0.0231903 0.6902510 0.7810208
p g20154.5 c0 a8.67 t4.17 0.6221957 0.0257553 0.5705596 0.6712011
p g20154.5 c0 a9.25 t4.75 0.4146342 0.0264133 0.3639793 0.4671607
p g20174.5 c0 a6.33 t1.83 0.5277348 100.1423196 0.0000000 1.0000000
p g20195.5 c0 a9.17 t3.67 0.5277205 100.1467970 0.0000000 1.0000000


Let’s use the overall survival estimates from the first model to get a quick estimate of abundance, using the following calculations.

phi <- tortoises.results$Phi.dot.p.time$results$real[1,1]
lwr <- tortoises.results$Phi.dot.p.time$results$real[1,3]
upr <- tortoises.results$Phi.dot.p.time$results$real[1,4]

N_2015 <- 205
N_2016 <- N_2015 * phi
N_2017 <- N_2016 * phi + 191*phi^(2/12)
N_2018 <- N_2017 * phi 
N_2019 <- N_2018 * phi + 155*phi^(4/12)
# add the final 34 individuals that were added in December of 2019
N_2020 <- N_2019 * phi^(8/12) + 34

# get the lower and upper confidence intervals
# lower 95% CL
N_2015_lwr <- 205
N_2016_lwr <- N_2015_lwr * lwr
N_2017_lwr <- N_2016_lwr * lwr + 191*lwr^(2/12)
N_2018_lwr <- N_2017_lwr * lwr 
N_2019_lwr <- N_2018_lwr * lwr + 155*lwr^(4/12)
# add the final 34 individuals that were added in December of 2019
N_2020_lwr <- N_2019_lwr * lwr^(8/12) + 34

# upper 95% CL
N_2015_upr <- 205
N_2016_upr <- N_2015_upr * upr
N_2017_upr <- N_2016_upr * upr + 191*upr^(2/12)
N_2018_upr <- N_2017_upr * upr
N_2019_upr <- N_2018_upr * upr + 155*upr^(4/12)
# add the final 34 individuals that were added in December of 2019
N_2020_upr <- N_2019_upr * upr^(8/12) + 34

santafe_pop_15_20 <- 
  data.frame(Year = c("2015", "2016", "2017", "2018", "2019", "2020"),
             N = c(N_2015,N_2016, N_2017, N_2018, N_2019, N_2020),
             lcl = c(N_2015_lwr,N_2016_lwr, N_2017_lwr, 
                     N_2018_lwr, N_2019_lwr, N_2020_lwr),
             ucl = c(N_2015_upr,N_2016_upr, N_2017_upr, 
                     N_2018_upr, N_2019_upr, N_2020_upr))

kable(santafe_pop_15_20, 
      caption = "Population estimates (2015-2020) of the 
      tortoises released on Santa Fe.") %>%
  kable_styling(bootstrap_options = c("striped", "condensed"))
Population estimates (2015-2020) of the tortoises released on Santa Fe.
Year N lcl ucl
2015 205.0000 205.0000 205.0000
2016 194.0349 190.3916 196.8086
2017 372.9143 365.4853 378.6507
2018 352.9676 339.4407 363.5205
2019 486.2736 466.4791 501.9023
2020 502.7752 478.0463 522.4415


Let’s also track the estimated population size of each cohort individually.

Population estimates of tortoises on Santa Fe (2015-2020).
Year N lcl ucl
First release cohort (2015)
Release (June 2015) 205.0000 205.0000 205.0000
2016 194.0349 190.3916 196.8086
2017 183.6562 176.8242 188.9445
2018 173.8327 164.2237 181.3946
2019 164.5347 152.5210 174.1464
2020 (March) 157.8890 146.3606 167.1125
Second release cohort (2017)
Release (Apr 2017) 191.0000 191.0000 191.0000
2018 180.7837 177.3893 183.3680
2019 171.1138 164.7484 176.0409
2020 (March) 162.7049 153.9539 169.5819
Third release cohort (2019)
Release (Feb 2019) 155.0000 155.0000 155.0000
2020 (March) 146.0387 143.0705 148.3017

Let’s put these estimates of survival, detection, and population size together in a single figure.

# create the df for plotting population parameter estimates
tortoises.mod.avg.phi.unique$cohort <- 
  c(rep("2015",9), rep("2017",9), rep("2019", 9))

tortoises.mod.avg.phi.unique$year <- 
  c(rep(c(2015,2015,2016,2017,2017,2018,2019,2019,2019),3))

tortoises.phi.df <- tortoises.mod.avg.phi.unique %>%
  filter(ucl != 1) %>%
  group_by(year) %>%
  summarise(phi = mean(estimate),
            se = mean(se),
            lcl = mean(lcl),
            ucl = mean(ucl)) %>%
  ungroup() %>%
  mutate(time = c(2015.5, 2016.5, 2017.5, 2018.5, 2019.5))

det.df <- tortoises.mod.avg.p.unique[c(1:2,4:8),] %>%
  mutate(year = decimal_date(as.Date(c("2015-08-01", "2016-06-01", 
                                       "2017-06-01", "2018-06-01",
                                       "2019-04-01", "2019-08-01", 
                                       "2020-03-01"), 
                                     format = "%Y-%m-%d")))

scaleFUN <- function(x) sprintf("%.2f", x)

espanola.phi <- data.frame(stage = c("juvenile", "subadult/adult"),
                           phi = c(0.931, 0.979),
                           lcl = c(0.902, 0.927),
                           ucl = c(0.951, 0.992))

santafe.phi.plot <- 
  ggplot(tortoises.phi.df,  aes(x = time, y = phi)) +
  geom_hline(data = espanola.phi, inherit.aes = FALSE, 
             aes(yintercept = phi), lty = "dashed", lwd = 1.1, col = "grey") +
  geom_pointrange(aes(ymin = lcl, ymax = ucl)) +
  geom_point(size = 2) +
  labs(y = expression(paste("Apparent survival ( ", phi, ")")), x = "Year") + 
  scale_y_continuous(limits = c(floor_any(min(tortoises.phi.df$lcl),0.05), 1), 
                     labels = scaleFUN) + 
  xlim(2015,2020.5) + 
  theme(legend.position = "top") + 
  annotate("text", x = 2020.15, y = 0.94, 
           label = "juvenile", size = 4, col = "grey25") +
  annotate("text", x = 2020.15, y = 0.99, 
           label = "(sub)adult", size = 4, col = "grey25") + 
  theme_classic() + mythemes
  
santafe.p.plot <- 
  ggplot(det.df, aes(x = year, y = estimate)) +  geom_line() + 
  geom_pointrange(aes(ymin = lcl, ymax = ucl)) +
  geom_hline(aes(yintercept = mean(det.df$estimate)), lty = "dashed") +
  geom_point(size = 2) +
  ylab("Detection probability") + xlab("Year") +
  scale_y_continuous(limits = c(0.3,1), labels = scaleFUN) +
  xlim(2015,2020.5) + theme_classic() + mythemes

santafe.n.plot <- 
  ggplot(data = total_pop) +
  geom_line(aes(x = Year, y = N_cum), color = "black") +
  geom_line(aes(x = Year, y = N_hat), color = "black") +
  geom_ribbon(aes(x = Year, ymin = lwr, ymax = upr), alpha = 0.5) +
  annotate("text", 
           x = decimal_date(as.Date("2015-06-01", format = "%Y-%m-%d")), 
           y = 205+34, label = "Release 1", size = 4) +
  annotate("text", 
           x = decimal_date(as.Date("2017-04-01", format = "%Y-%m-%d")),  
           y = 396+34, label = "Release 2", size = 4) +
  annotate("text", 
           x = decimal_date(as.Date("2019-02-01", format = "%Y-%m-%d")),
           y = 551+34, label = "Release 3", size = 4) +
  annotate("text", 
           x = decimal_date(as.Date("2020-05-05", format = "%Y-%m-%d")),
           y = 551, label = 551, size = 4) +
  annotate("text", 
           x = decimal_date(as.Date("2020-05-05", format = "%Y-%m-%d")),
           y = last(total_pop$N_hat), 
           label = round(last(total_pop$N_hat),0), size = 4) +
  annotate("text", 
           x = decimal_date(as.Date("2020-05-05", format = "%Y-%m-%d")),
           y = last(total_pop$N_hat) * 0.88, 
           label = paste("(",round(last(total_pop$N_hat)/551*100,1),"%",")", 
                         sep = ""), size = 4) +
  ylab("Population size") + xlab("Year") +
  xlim(2015,2020.5) + ylim(0,600) + theme_classic() + mythemes
# combine survival, detection, and N figures
library(cowplot)
ggdraw() +
  draw_plot(santafe.phi.plot, x = 0, y = .4, width = .5, height = .6) +
  draw_plot(santafe.p.plot, x = .5, y = .4, width = .5, height = .6) +
  draw_plot(santafe.n.plot, x = 0, y = 0, width = 1, height = 0.4) +
  draw_plot_label(label = c("A", "B", "C"), size = 15,
                  x = c(0.1, 0.6, 0.1), y = c(1, 1, 0.4))

Population projections


We’ll make deterministic and stochastic population projections in the R package popbio. These will be female-only models, making the assumption that approximately half of all tortoise eggs become female.

Let’s first create our Leslie matrices.

library(popbio)

# hatching viability parameter estimates and quantiles from kevin'a ABC
egghatchvia <- c(0.3447368, 0.2305263, 0.2636842, 0.3005263, 0.3078947, 
                 0.3447368, 0.3815789, 0.4184211, 0.418421, 0.4184211)

names(egghatchvia) <- c("mean", "p025", "p05", "p10", "p25", 
                        "p50", "p75", "p90", "p95", "p975")

# starting female population in 2020
n_2020 <- c(0, 0, round(last(total_pop$N_hat)/2), 20)

# vital rates
propfem <- 0.5 # proportion of population that is female
repro <- 17 # reproductive age
# mean annual number of female eggs produced
F1 <- 3
F1_lwr <- 2 
F1_upr <- 4 
# survivorship from egg to juvenile (age 1) (from Kevin's Espnola ABC)
G1 <- egghatchvia["mean"] 
G1_lwr <- egghatchvia["p025"]
G1_upr <- egghatchvia["p975"]
# annual survival, phi (1-4 yrs)
p1 <- 0.75 
p1_lwr <- 0.6
p1_upr <- 0.9
# young juvenile stage survival parameter for matrix
P1 <- (1-p1^(3-1))*p1/(1-p1^3)
P1_lwr <- (1-p1_lwr^(3-1))*p1_lwr/(1-p1_lwr^3)
P1_upr <- (1-p1_upr^(3-1))*p1_upr/(1-p1_upr^3)
# juvenile/subadult survival (4-17 yrs) (Santa Fe rates)
p2 <- tortoises.results$Phi.dot.p.time$results$real$estimate[1]
p2_lwr <- tortoises.results$Phi.dot.p.time$results$real$lcl[1]
p2_upr <- tortoises.results$Phi.dot.p.time$results$real$ucl[1]
# juvenile/subadult stage survival parameter for matrix
P2 <- (1-p2^(13-1))*p2/(1-p2^13)
P2_lwr <- (1-p2_lwr^(13-1))*p2_lwr/(1-p2_lwr^13)
P2_upr <- (1-p2_upr^(13-1))*p2_upr/(1-p2_upr^13)
# survivorship from 1 to 4 (using the range from Gibbs et al. 2014)
G2 <- round(p1^3*(1-p1)/(1-p1^3),3) 
G2_lwr <- round(p1_lwr^3*(1-p1_lwr)/(1-p1_lwr^3),3)
G2_upr <- round(p1_upr^3*(1-p1_upr)/(1-p1_upr^3),3)
# survivorship from 4 to 17 (using the subadult/adult survival rates from Espanola)
G3 <- round(p2^13*(1-p2)/(1-p2^13),3) 
G3_lwr <- round(p2_lwr^13*(1-p2_lwr)/(1-p2_lwr^13),3)
G3_upr <- round(p2_upr^13*(1-p2_upr)/(1-p2_upr^13),3)
# annual survival for adult stage, phi (8 + years old)
P3 <- 0.979 
P3_lwr <- 0.927
P3_upr <- 0.992

# make matrices
stages <- c("egg/hatchling", "young juvenile", "juvenile/subadult", "adult")
tortoise.matrix <- matrix(c(0, 0, 0, F1,
                            G1, P1, 0, 0,
                            0, G2, P2, 0,
                            0, 0, G3, P3),
                          nrow = 4, ncol = 4, byrow = T)
tortoise.matrix.lwr <- matrix(c(0, 0, 0, F1_lwr,
                                G1_lwr, P1_lwr, 0, 0,
                                0, G2_lwr, P2_lwr, 0,
                                0, 0, G3_lwr, P3_lwr),
                              nrow = 4, ncol = 4, byrow = T)
tortoise.matrix.upr <- matrix(c(0, 0, 0, F1_upr,
                                G1_upr, P1_upr, 0, 0,
                                0, G2_upr, P2_upr, 0,
                                0, 0, G3_upr, P3_upr),
                              nrow = 4, ncol = 4, byrow = T)

Now let’s run the deterministic projection to extract stable stage proportions and population growth rates.

We will project the Santa Fe population from 2020 to 2100.

set.seed(123)

it <- 81 # time steps for model

# deterministic model
tortoise.proj <- pop.projection(tortoise.matrix, n_2020, it)
tortoise.proj.lwr <- pop.projection(tortoise.matrix.lwr, n_2020, it)
tortoise.proj.upr <- pop.projection(tortoise.matrix.upr, n_2020, it)

proj.df <- data.frame(Year = c(2020:2100), 
                      N_projected = tortoise.proj$stage.vectors[4,],
                      N_proj_lwr = tortoise.proj.lwr$stage.vectors[4,],
                      N_proj_upr = tortoise.proj.upr$stage.vectors[4,])

# time to saturation (K = 1500 female tortoises)
min(proj.df$Year[proj.df$N_projected >= 1500]) # max year at saturation
## [1] 2068
min(proj.df$Year[proj.df$N_proj_upr >= 1500]) # earliest year at saturation
## [1] 2046
# plot projection (without density dependence)
ggplot(proj.df, aes(Year, N_projected)) + geom_line(col = "blue", lwd = 1.1) + 
  geom_line(aes(x = Year, y = N_proj_lwr), col = "grey10") +
  geom_line(aes(x = Year, y = N_proj_upr), col = "grey10") +
  theme_classic() + xlim(2020, 2050) + ylim(0,1500)

# minimum adult population size
min(proj.df[,2:4]) 
## [1] 12.41394
# population growth rate
tortoise.proj$lambda 
## [1] 1.076044
tortoise.proj.lwr$lambda
## [1] 0.9774327
tortoise.proj.upr$lambda
## [1] 1.157446
# stable stages 
tortoise.proj$stable.stage 
## [1] 0.3677598 0.2493339 0.2509978 0.1319085
tortoise.proj.lwr$stable.stage 
## [1] 0.3965698 0.1874751 0.2221450 0.1938102
tortoise.proj.upr$stable.stage 
## [1] 0.34199152 0.27181411 0.28723519 0.09895918
# generation time
generation.time(tortoise.matrix)
## [1] 31.5414
generation.time(tortoise.matrix.lwr)
## [1] 28.71707
generation.time(tortoise.matrix.upr)
## [1] 30.73834

Without any other constraints on the tortoise population, these vital rates should ensure long-term persistence without future releases. Growth rates are very high, and the stable stage proportion for adult is between 0.1–0.2.

Now let’s create our stochastic model.

# stochastic projection (with density dependence)
tortoise.matrices <- list(tortoise.matrix, tortoise.matrix.lwr, 
                          tortoise.matrix.upr)
# nmax = K = K for Santa Fe (3000) divided by 2 times the stable stage prop. for adults
tortoise.proj.stoch <- 
  stoch.projection(matrices = tortoise.matrices,
                   n0 = n_2020, 
                   tmax = it, 
                   nreps = 10000,
                   prob = c(0.68, 0.16, 0.16),
                   nmax = 1500/tortoise.proj$stable.stage[4])

final.fem.pop <- tortoise.proj.stoch[,4]
hist(final.fem.pop, main = "Santa Fe adult female pop. in 2100", 
     xlab = "N adults")
abline(v = mean(final.fem.pop), col = "red", lwd = 2)

Almost all of our stochastic projections end with a female adult population > 1000 individuals. The mean projection for 2100 is just below 1500.

Let’s run the stochastic projection again, but this time we’ll put the projections in a for loop that will let us get population size estimates at each time step so we can plot out the projected female population from 2020 to 2100.

extin=c()
popQuant = matrix(NA, 3, 82)
popQuant[,1] = rep(sum(n_2020), 3)
popMean = vector('numeric', 82)
popMean[1] = sum(n_2020)
popSD   = vector('numeric', 82)
popSD[1] = NA

for(i in 1:81){
  matriz=c()
  interactionX=10000
  quasi=75
  popExtinctProject <- 
    stoch.projection(matrices=tortoise.matrices, n0=n_2020, tmax=i, 
                     nmax = 1500/tortoise.proj$stable.stage[4], 
                     nreps = interactionX, 
                     prob = c(0.68, 0.16, 0.16), verbose=FALSE)
  for(ii in 1:interactionX){
    a <- popExtinctProject[ii,4]
    matriz <- rbind(matriz,c(a))
  }
  vv <- matriz[matriz<quasi]
  s <- length(vv)
  extin <- c(extin,s)
  
  popQuant[,i+1] <- quantile(popExtinctProject[,4], probs=c(0.025, 0.5, 0.975))
  popMean[i+1] <- mean(popExtinctProject[,4])
  popSD[i+1] <- sd(popExtinctProject[,4])
}

stoch.proj.df <- data.frame(Year = c(2020:2100), 
                            N_projected = c(n_2020[4],popMean[2:81]),
                            N_proj_med = c(n_2020[4],popQuant[2,2:81]),
                            N_proj_lwr = c(n_2020[4],popQuant[1,2:81]),
                            N_proj_upr = c(n_2020[4],popQuant[3,2:81]))

# table of stochastic projections (annual means across iterations)
kable(stoch.proj.df) %>%
  kable_styling(bootstrap_options = c("striped", "condensed")) %>% 
  scroll_box(height = "300px")
Year N_projected N_proj_med N_proj_lwr N_proj_upr
2020 20.00000 20.00000 20.00000 20.00000
2021 31.35200 31.51400 28.83600 33.17800
2022 41.14566 41.53612 35.83882 44.95530
2023 49.58904 50.22864 44.10959 53.69153
2024 56.94024 57.92870 51.04890 61.63168
2025 63.53890 63.72569 56.22097 69.04136
2026 69.75895 69.48694 60.44117 77.91868
2027 75.85269 75.76439 65.19647 85.70249
2028 81.93094 81.97097 69.87710 93.75009
2029 88.09195 88.21603 73.76498 102.23745
2030 94.48232 94.47263 77.45783 112.00050
2031 101.54580 101.48743 82.16992 122.09223
2032 108.74008 108.49236 86.30035 132.83760
2033 116.58290 115.95879 90.95143 145.28897
2034 124.80682 123.92487 96.08951 158.17859
2035 133.61245 132.72855 100.78975 171.12170
2036 143.44269 142.45064 106.25213 186.51732
2037 153.43908 151.95236 111.71132 201.83413
2038 164.54999 162.81035 118.26941 219.74081
2039 176.68384 174.73113 125.30766 239.69477
2040 189.55221 187.59238 131.57494 259.70921
2041 202.58162 199.39012 140.27402 282.74356
2042 216.90881 213.99125 146.37978 305.07998
2043 232.09107 228.00715 154.90188 331.35909
2044 248.75898 244.95739 163.32701 354.45655
2045 266.60918 261.72329 174.03482 389.86121
2046 285.87687 280.25645 182.30603 419.64687
2047 306.55423 299.98379 195.02205 453.15409
2048 329.26078 321.31593 206.36077 493.91536
2049 351.68720 344.61918 217.80670 524.63756
2050 378.90360 370.59224 232.43769 577.39504
2051 403.85692 393.23159 242.99478 620.63475
2052 433.16520 421.52331 256.97200 672.62053
2053 462.88972 452.01523 271.85951 725.47862
2054 500.13432 488.12765 293.87717 784.79338
2055 536.14800 522.81365 312.66506 849.19281
2056 570.99695 553.87310 328.82871 918.71309
2057 613.06685 595.43593 347.83700 987.64256
2058 656.84293 636.20461 364.30218 1077.68949
2059 704.71241 683.10129 390.03297 1146.23159
2060 755.50700 729.84283 419.73771 1237.84476
2061 806.71774 784.57866 437.76005 1307.24346
2062 860.35991 832.05764 469.46271 1387.83461
2063 918.57302 889.76281 501.21510 1438.42960
2064 981.60545 960.42454 534.29004 1488.36448
2065 1033.49947 1027.76733 565.31707 1499.60668
2066 1092.48728 1095.82393 588.29632 1522.64144
2067 1147.69066 1172.02788 637.81851 1547.95792
2068 1196.00715 1238.81549 666.71948 1557.72264
2069 1246.24031 1291.49855 712.68675 1573.34961
2070 1292.28332 1336.38883 764.34160 1595.39479
2071 1324.08663 1374.58449 808.57528 1602.15423
2072 1355.71792 1404.65550 857.24457 1610.25845
2073 1380.37400 1427.33179 914.27047 1617.70955
2074 1400.75478 1439.09491 980.36527 1621.61076
2075 1416.24521 1453.13790 1027.92711 1620.22698
2076 1429.06069 1461.04824 1093.64717 1627.67874
2077 1439.00925 1470.04710 1157.14405 1628.85139
2078 1446.38514 1475.10839 1197.05350 1631.58789
2079 1453.26354 1477.78028 1209.14899 1635.44168
2080 1453.14202 1478.83379 1210.73134 1636.45450
2081 1459.07659 1483.41720 1220.87480 1636.56049
2082 1462.05658 1485.48084 1224.34410 1638.20545
2083 1460.29836 1484.90752 1225.14460 1637.73433
2084 1461.70137 1485.13874 1231.38672 1639.91671
2085 1462.70111 1483.97556 1238.34284 1639.95807
2086 1460.93981 1484.53392 1230.86386 1636.29892
2087 1462.71445 1485.67982 1227.18371 1639.42123
2088 1462.74185 1484.79385 1231.19389 1639.72448
2089 1461.62007 1484.78248 1232.61817 1639.39291
2090 1461.59350 1484.47247 1232.50622 1637.41600
2091 1463.83581 1484.97122 1236.80515 1641.14277
2092 1463.95373 1485.89601 1233.95111 1639.34018
2093 1461.84792 1484.60982 1231.05523 1638.72566
2094 1463.41850 1485.59364 1228.99176 1640.47856
2095 1464.71896 1486.52427 1237.44005 1640.83255
2096 1463.79791 1485.75974 1231.98156 1639.71838
2097 1462.48840 1485.13716 1230.70017 1639.60505
2098 1462.80770 1484.51532 1237.33662 1640.01777
2099 1463.36475 1486.17145 1234.48515 1640.35929
2100 1463.52115 1485.40003 1238.74413 1638.99829
# plot projection (with density dependence)
stoch.pop.plot <- ggplot(stoch.proj.df, aes(Year, N_projected)) + 
  geom_ribbon(aes(ymin = N_proj_lwr, ymax = N_proj_upr), 
              fill = "grey", alpha = 0.7) +
  geom_line(lwd = 1.1) + ylab("Female population (adults)") +
  theme_classic() + mythemes

stoch.pop.plot

plot(extin/interactionX, type='l', lwd=2, xlab="Years into the future", 
     main="Extinction probability for Santa Fe population")

# pop growth rate
popSGR <- stoch.growth.rate(tortoise.matrices, 
                            verbose=F,
                            prob = c(0.68, 0.16, 0.16))

lambdaCI <- list()
lambdaCI$approx <- exp(popSGR$approx)
lambdaCI$sim <- exp(popSGR$sim)
lambdaCI$sim.CI <- exp(popSGR$sim.CI)
cat('lambda\n')
## lambda
print(lambdaCI)
## $approx
## [1] 1.069908
## 
## $sim
## [1] 1.070009
## 
## $sim.CI
## [1] 1.068826 1.071194

These projections obviously do not take into account environmental stochasticity that affects tortoise vital rates (e.g., drought, ENSO cycles, temperature change, shifting sex ratios). Those information would help improve the accuracy of these projections, setting them in a more realistic future context with ongoing global change.

Let’s attach this projection figure to our other survival and abundance figures.

library(cowplot)
ggdraw() +
  draw_plot(santafe.phi.plot, x = 0, y = 0.5, width = 0.5, height = 0.5) +
  draw_plot(santafe.p.plot, x = 0.5, y = 0.5, width = 0.5, height = 0.5) +
  draw_plot(santafe.n.plot, x = 0, y = 0, width = 0.5, height = 0.5) +
  draw_plot(stoch.pop.plot, x = 0.5, y = 0, width = 0.5, height = 0.5) +
  draw_plot_label(label = c("a", "b", "c", "d"), size = 15,
                  x = c(0.08, 0.58, 0.08, 0.58), y = c(1, 1, 0.5, 0.5))

Dispersal


Data preparation

To assess dispersal I used the coordinates from individual tortoise capture records on Santa Fe from 2015 to 2020.

# rename santa fe data frame, remove rows without location data
movements <- santafe.data[is.na(santafe.data$Latitude) == FALSE,]
movements$Date <- paste(movements$Month, movements$Day, movements$Year, 
                        sep = "/")
movements$Date <- as.Date(movements$Date,format='%m/%d/%Y')

We should add one more column to the data frame—Days_ellapsed—to describe the time since release for each observation. But because there are three release dates, we really need three distinct groups of values for that column specific to their release cohorts.

movements2015 <- subset(movements, Cohort == "2015")
movements2017 <- subset(movements, Cohort == "2017")
movements2019 <- subset(movements, Cohort == "2019")
movementsNA <- subset(movements, is.na(Cohort))
movements2015$Days_ellapsed <- julian(movements2015$Date, 
                                      origin = as.Date("2015-06-27"))
movements2017$Days_ellapsed <- julian(movements2017$Date, 
                                      origin = as.Date("2017-04-17"))
movements2019$Days_ellapsed <- julian(movements2019$Date, 
                                      origin = as.Date("2019-02-27"))
movementsNA$Days_ellapsed <- NA
# combine them into one dataset again
movements <- rbind(movements2015, movements2017, movements2019, movementsNA)

Let’s now convert our coordinates to UTMs, calculate the distance of each point from the original release point, and make some simple plots of the study area and tortoise locations.

I’ll start by only showing the 2015 release cohort over time. Then I’ll produce the same plots including the 2017 cohort. I also need to update the UTM coordinates for the Santa Fe island shapefile so they are on the same scale as the tortoise points (relative to a central release point of 0,0).

# create shapefile
library(forcats)
library(raster)
library(rgdal)
library(sf)
library(maptools)
coordinates(object = movements) <- ~ Longitude + Latitude
proj4string(movements) <- CRS("+proj=longlat +datum=WGS84")
movements.shp <- spTransform(movements, CRSobj = CRS("+init=epsg:32715"))
movements.shp$X <- movements.shp@coords[,"Longitude"]
movements.shp$Y <- movements.shp@coords[,"Latitude"]
# Here I create new X and Y UTM fields that make coordinates relative to 
# the release point (0,0). 
# This will make it easier to quickly assess dispersal distances in the maps, 
# by centering the release point at 0,0.
movements.shp$X_corrected <- movements.shp$X - 827253
movements.shp$Y_corrected <- movements.shp$Y - 9909160
movements.data <- as.data.frame(movements.shp)
# reformat the occasion column as factor
movements.data <- movements.data %>%
  mutate(occ = as.factor(Occasion),
         occ = recode(occ, "1" = "June 2015", "2" = "August 2015", 
                      "3" = "June 2016", "4" = "April 2017", "5" = "June 2017", 
                      "6" = "June 2018", "7" = "February 2019", 
                      "8" = "April 2019", "9" = "August 2019", 
                      "10" = "March 2020")) %>% as.data.frame()

Spatial patterns - recapture data

library(sp)
santafe.shp <- readOGR("data/Santa_Fe.shp", verbose=FALSE)
santafe.shp <- spTransform(santafe.shp, CRS("+init=epsg:32715"))
santafe <- fortify(santafe.shp)
santafe$X <- santafe$long - 827253
santafe$Y <- santafe$lat - 9909160

Here is the code to make dispersal maps for specific occasions and cohorts. I’ll make plots for the first release cohorts and the total population.

First let’s look at the general distribution, showing tortoise locations at each occasion with overlayed 95% confidence ellipses.

library(ggsn)
disp.scatter <- function(data, occasion, cohort){
  ggplot(data = data[data$occ == occasion & data$Cohort == cohort,], 
         aes(x = X_corrected, y = Y_corrected)) +
    geom_polygon(inherit.aes = FALSE, data = santafe, 
                 aes(x = santafe$X, y = santafe$Y), fill = "grey") +
    geom_point(shape = 16, alpha = 0.5) +
    geom_point(inherit.aes = FALSE, aes(x = 0, y = 0), 
               shape = 4, size = 1, stroke = 1.5, color = "red") +
    stat_ellipse(aes(x = X_corrected, y = Y_corrected), color = "blue", 
                 level = 0.95, lwd = 0.9) +
    theme_classic() + mythemes + coord_equal() + theme(legend.position="none") + 
    labs(x = "Distance from release (m)", y = "Distance from release (m)") +
    annotate("text", x = 3500, y = 2200, label = "N", size = 8) +
    annotate("text", x = 3500, y = 1600, label = "\u2191", size = 15)
}

stat.ellipse.area <- function(plot){
 # Get ellipse coordinates from plot 
 # (from StackOverflow: https://tinyurl.com/yaulv58n)
  pb = ggplot_build(plot)
  el = pb$data[[4]][c("x","y")]
  # Center of ellipse
  ctr = MASS::cov.trob(el)$center 
  # Calculate distance to center from each point on the ellipse
  dist2center <- sqrt(rowSums((t(t(el)-ctr))^2))
  # Calculate area of ellipse from semi-major and semi-minor axes. 
  # These are, respectively, the largest and smallest values of dist2center. 
  return(pi*min(dist2center)*max(dist2center)/10000) # area in hectares of ellipse
}

p1 <- disp.scatter(movements.data, "June 2016", "2015")
p2 <- disp.scatter(movements.data, "June 2017", "2015")
p3 <- disp.scatter(movements.data, "June 2018", "2015")
p4 <- disp.scatter(movements.data, "August 2019", "2015")

# first cohort spread
first.cohort.spread <- data.frame(
  year = c(2016:2019),
  area = c(stat.ellipse.area(p1),stat.ellipse.area(p2),
           stat.ellipse.area(p3),stat.ellipse.area(p4)),
  prop.island = c(stat.ellipse.area(p1)/2473,stat.ellipse.area(p2)/2473,
                  stat.ellipse.area(p3)/2473,stat.ellipse.area(p4)/2473)
)

p1 <- p1 + 
  annotate("text", x = 0, y = 1800, 
           label = paste(round(first.cohort.spread$area[1], 1), " ha (",
                         round(first.cohort.spread$prop.island[1]*100, 1), "%)", 
                         sep = ""), size = 5)
p2 <- p2 + 
  annotate("text", x = 0, y = 1800, 
           label = paste(round(first.cohort.spread$area[2], 1), " ha (",
                         round(first.cohort.spread$prop.island[2]*100, 1), "%)", 
                         sep = ""), size = 5)
p3 <- p3 + 
  annotate("text", x = 0, y = 1800, 
           label = paste(round(first.cohort.spread$area[3], 1), " ha (",
                         round(first.cohort.spread$prop.island[3]*100, 1), "%)", 
                         sep = ""), size = 5)
p4 <- p4 + 
  annotate("text", x = 0, y = 1800, 
           label = paste(round(first.cohort.spread$area[4], 1), " ha (",
                         round(first.cohort.spread$prop.island[4]*100, 1), "%)", 
                         sep = ""), size = 5)

plot_grid(p1, p2, p3, p4,
          ncol  = 2, 
          labels = c("1 year", "2 years", "3 years", "4 years"), 
          label_size = 20)

The first cohort is slowly spreading over the center of the island and seems to be doubling in area almost every year since release.

Let’s see what these movements look like for the 2015 cohort when you connect the observations of individual tortoises over time as traces.

traces1 <- ggplot() +
  geom_polygon(data = santafe, 
               aes(x = santafe$X, y = santafe$Y), fill = "grey") +
  geom_path(data = movements.data[movements.data$Cohort == "2015",], 
            aes(x = X_corrected, 
                y = Y_corrected, group = PIT_final), alpha = 0.2, lwd = 0.6) +
  geom_point(aes(x = 0, y = 0), 
             shape = 4, size = 2, stroke = 1.5, color = "red") +
  theme_classic() + mythemes + coord_equal() + 
  labs(x = "Distance from release (m)", y = "Distance from release (m)", 
       title = "2015 cohort (4.5 years)", subtitle = "", caption = "") +
  annotate("text", x = 3500, y = 2200, label = "N", size = 8) +
  annotate("text", x = 3500, y = 1600, label = "\u2191", size = 15)

traces1
Individual tortoise dispersal routes from first release cohort on Santa Fe island (2015-2020)

Individual tortoise dispersal routes from first release cohort on Santa Fe island (2015-2020)

Let’s now look at all the traces of all cohorts together.

all.traces <-
  ggplot(data = movements.data,
                  aes(x = X_corrected, y = Y_corrected)) +
  geom_polygon(data = santafe, 
               aes(x = santafe$X, y = santafe$Y), fill = "grey") +
  geom_path(aes(group = PIT_final), alpha = 0.2, lwd = 0.6) +
  geom_point(aes(x = 0, y = 0), 
             shape = 4, size = 2, stroke = 1.5, color = "red") +
  theme_classic() + mythemes + coord_equal() +
  labs(x = "Distance from release (m)", y = "Distance from release (m)") +
  annotate("text", x = 3500, y = 2200, label = "N", size = 8) +
  annotate("text", x = 3500, y = 1600, label = "\u2191", size = 15)+
  theme(plot.margin = unit(c(0,0,0,0), "mm"))

all.traces
Individual tortoise dispersal routes on Santa Fe island (2015-2020)

Individual tortoise dispersal routes on Santa Fe island (2015-2020)

Interesting how tortoise movement has not been one directional. Many tortoises make large outward movements after release, only to return close to the center of the island on another occasion. These are only snapshops, so we really can’t say much about tortoise movement or dispersal from these traces, other than that tortoises seem to be exploratory in these initial post-release movements.

Finally, let’s look at dispersal ellipses for the whole tortoise population from the last survey occasion in 2020.

p.final.cohorts <-   
  ggplot(data = movements.data[movements.data$occ == "March 2020" & 
                                   !is.na(movements.data$Cohort),], 
         aes(x = X_corrected, y = Y_corrected)) +
  geom_polygon(inherit.aes = FALSE, data = santafe, 
               aes(x = santafe$X, y = santafe$Y), fill = "grey") +
  geom_point(shape = 16, alpha = 0.5) +
  geom_point(inherit.aes = FALSE, aes(x = 0, y = 0), 
             shape = 4, size = 2, stroke = 1.5, color = "red") +
  stat_ellipse(aes(x = X_corrected, y = Y_corrected, color = Cohort),
               level = 0.95, lwd = 0.9) + 
  scale_y_continuous(limits = c(-2100, 3100), breaks = seq(-2000, 2000, 1000)) +
  scale_color_manual(values = c("#E69F00", "#56B4E9", "#009E73")) +
  theme_classic() + mythemes + coord_equal() + theme(legend.position="top") + 
  labs(x = "Distance from release (m)", y = "Distance from release (m)") +
  annotate("text", x = 3500, y = 2200, label = "N", size = 8) +
  annotate("text", x = 3500, y = 1600, label = "\u2191", size = 15) +
  theme(plot.margin = unit(c(0.1, 0.1, 0.1, 0.1), "cm"))

# Get ellipse coordinates from plot 
# (from StackOverflow: https://tinyurl.com/yaulv58n)
pb <- ggplot_build(p.final.cohorts)
cohort.areas <- NULL
for(group in unique(pb$data[[4]]$group)){
  el = pb$data[[4]]
  el.group = el[el$group == group,]
  el.group.xy = el.group[c("x","y")]
  # Center of ellipse
  ctr = MASS::cov.trob(el.group.xy)$center 
  # Calculate distance to center from each point on the ellipse
  dist2center <- sqrt(rowSums((t(t(el.group.xy)-ctr))^2))
  # Calculate area of ellipse from semi-major and semi-minor axes. 
  # These are, respectively, the largest and smallest values of dist2center. 
  area_ha <- pi*min(dist2center)*max(dist2center)/10000
  dat <- data.frame(cohort = group,
                    color = el.group$colour,
                    area_ha = area_ha,
                    area_perc = area_ha/2473 * 100,
                    stringsAsFactors = FALSE)
  cohort.areas <- bind_rows(cohort.areas, dat)
}

p.final.cohorts <- 
  p.final.cohorts + 
  annotate("text", x = -2500, y = 2700, 
           label = paste(round(cohort.areas$area_ha[cohort.areas$cohort == "1"], 
                               1), " ha (",
                         round(cohort.areas$area_perc[cohort.areas$cohort == "1"], 
                               2), "%)", sep = ""), size = 4, 
           color = cohort.areas$color[cohort.areas$cohort == "1"]) +
  annotate("text", x = 0, y = 2700, 
           label = paste(round(cohort.areas$area_ha[cohort.areas$cohort == "2"], 
                               1), " ha (",
                         round(cohort.areas$area_perc[cohort.areas$cohort == "2"], 
                               2), "%)", sep = ""), size = 4,
            color = cohort.areas$color[cohort.areas$cohort == "2"]) +
  annotate("text", x = 2500, y = 2700, 
           label = paste(round(cohort.areas$area_ha[cohort.areas$cohort == "3"], 
                               1), " ha (",
                         round(cohort.areas$area_perc[cohort.areas$cohort == "3"], 
                               2), "%)", sep = ""), size = 4,
            color = cohort.areas$color[cohort.areas$cohort == "3"]) +
  theme(plot.margin = unit(c(0,0,0,0), "mm"))

p.final.cohorts
Distribution of tortoise cohorts on Santa Fe, as of March 2020.

Distribution of tortoise cohorts on Santa Fe, as of March 2020.

These final distributions seem to reinforce the “doubling” seen in the first cohort’s dispersal distances over time. The first cohort is distributed over an area roughly twice the size of the second cohort, which is also roughly twice as widespread as the third cohort.

What about the ellipse for the whole population in 2020?

p.final <- 
  ggplot(data = movements.data[movements.data$occ == "March 2020",], 
         aes(x = X_corrected, y = Y_corrected)) +
  geom_polygon(inherit.aes = FALSE, data = santafe, 
               aes(x = santafe$X, y = santafe$Y), fill = "grey") +
  geom_point(shape = 16, alpha = 0.5) +
  geom_point(inherit.aes = FALSE, aes(x = 0, y = 0), 
             shape = 4, size = 1, stroke = 1.5, color = "red") +
  stat_ellipse(aes(x = X_corrected, y = Y_corrected),
               level = 0.95, lwd = 0.9, color = "blue") +
  scale_color_manual(values = c("#E69F00", "#56B4E9", "#009E73")) +
  theme_classic() + mythemes + coord_equal() + theme(legend.position="top") + 
  labs(x = "Distance from release (m)", y = "Distance from release (m)") +
  annotate("text", x = 3500, y = 2200, label = "N", size = 8) +
  annotate("text", x = 3500, y = 1600, label = "\u2191", size = 15)

p.final + annotate("text", x = 0, y = 1800, 
                   label = paste(round(stat.ellipse.area(p.final), 1), 
                                 " ha (",
                                 round(stat.ellipse.area(p.final)/2473*100, 1), 
                                 "%)", 
                                 sep = ""), size = 5)

Let’s now examine how tortoise distributions vary over time with kernel density maps.

library(spatstat)
# create a spatstat spatial planar point pattern (ppp) object
tortoises.ppp <- as(movements.shp, "ppp")
santafe.owin <- as.owin(santafe.shp)

# merge the points to the island boundary
tortoises.santafe <- tortoises.ppp[santafe.owin]
tortoises.santafe$marks <- tortoises.santafe$marks %>%
  mutate(occ = as.factor(Occasion),
         occ = recode(occ, "1" = "June 2015", "2" = "August 2015", 
                      "3" = "June 2016", "4" = "April 2017", "5" = "June 2017", 
                      "6" = "June 2018", "7" = "February 2019", 
                      "8" = "April 2019", "9" = "August 2019", 
                      "10" = "March 2020")) %>% as.data.frame()

Here I calculate kernel density of tortoises on Santa Fe, at six time events (August 2015, June 2016, June 2017, June 2018, August 2019, and March 2020). These maps are kind of like heat maps: brighter colors/higher values indicate greater tortoise densities.

# kernel density function
den.fun <- function(ppp, res){
  den.list <- list()
  ras.list <- list()
  for(occasion in c("August 2015", "June 2016", "June 2017", 
                    "June 2018", "August 2019", "March 2020")){
    # get kernel density surface
    t <- subset.ppp(ppp, occ == occasion)
    t <- rescale(t, 100)
    den <- density.ppp(t, diggle = TRUE, sigma = bw.ppl, eps = 1)
    den$xcol <- den$xcol*100
    den$yrow <- den$yrow*100
    den$xrange <- den$xrange*100
    den$yrange <- den$yrange*100
    # convert spatstat images to raster
    ras <- raster(den)
    crs(ras) <- CRS("+init=epsg:32715")
    # add objects to lists
    den.list[[occasion]] <- den
    ras.list[[occasion]] <- ras
  }
  return(list(density = den.list, raster = ras.list))
}

den.list <- den.fun(ppp = tortoises.santafe)
tortoise.brick.raw <- brick(den.list$raster)
values(tortoise.brick.raw)[values(tortoise.brick.raw) < 0] <- 0
tortoise.brick.adj <- tortoise.brick.raw
tortoise.brick.adj.lcl <- tortoise.brick.raw
tortoise.brick.adj.ucl <- tortoise.brick.raw

# correct density for detection probability
det.seq <- list()
det.seq[["est"]] <- det.df$estimate[c(1:4,6:7)]
det.seq[["lcl"]] <- det.df$ucl[c(1:4,6:7)]
det.seq[["ucl"]] <- det.df$lcl[c(1:4,6:7)]
for(i in c(1:6)){
  values(tortoise.brick.adj[[i]]) <- 
    values(tortoise.brick.adj[[i]])/det.seq[["est"]][i]
  values(tortoise.brick.adj.lcl[[i]]) <-
    values(tortoise.brick.adj.lcl[[i]])/det.seq[["lcl"]][i]
  values(tortoise.brick.adj.ucl[[i]]) <-
    values(tortoise.brick.adj.ucl[[i]])/det.seq[["ucl"]][i]
}

# write individual rasters
for(i in names(tortoise.brick.raw)){
  writeRaster(tortoise.brick.raw[[i]], filename = 
                file.path(paste("data/tdensity/tortdenraw", i, ".tif")),
              format = "GTiff", overwrite = TRUE)
  writeRaster(tortoise.brick.adj[[i]], filename = 
                file.path(paste("data/tdensity/tortdenadj", i, ".tif")),
              format = "GTiff", overwrite = TRUE)
  writeRaster(tortoise.brick.adj.lcl[[i]], filename = 
                file.path(paste("data/tdensity/tortdenadj_lcl", i, ".tif")),
              format = "GTiff", overwrite = TRUE)
   writeRaster(tortoise.brick.adj.ucl[[i]], filename = 
                file.path(paste("data/tdensity/tortdenadj_ucl", i, ".tif")),
              format = "GTiff", overwrite = TRUE)
}
# write rasterbrick as multi-band raster
writeRaster(tortoise.brick.raw, 
            filename=file.path("data/tort_kden_raw_2015_2020.tif"), 
            format="GTiff", overwrite=TRUE)
writeRaster(tortoise.brick.adj, 
            filename=file.path("data/tort_kden_adj_2015_2020.tif"), 
            format="GTiff", overwrite=TRUE)
writeRaster(tortoise.brick.adj.lcl, 
            filename=file.path("data/tort_kden_adj_lcl_2015_2020.tif"), 
            format="GTiff", overwrite=TRUE)
writeRaster(tortoise.brick.adj.ucl, 
            filename=file.path("data/tort_kden_adj_ucl_2015_2020.tif"), 
            format="GTiff", overwrite=TRUE)

library(rasterVis)
names(tortoise.brick.adj) <- c("Y2015", "Y2016", "Y2017", 
                               "Y2018", "Y2019", "Y2020")
names(tortoise.brick.adj.lcl) <- c("Y2015", "Y2016", "Y2017", 
                                   "Y2018", "Y2019", "Y2020")
names(tortoise.brick.adj.ucl) <- c("Y2015", "Y2016", "Y2017", 
                                   "Y2018", "Y2019", "Y2020")

release.pt <- data.frame(x = 827253, y = 9909160)
coordinates(release.pt) <- ~ x + y

total.density.plots <-
  levelplot(tortoise.brick.adj, par.settings = viridisTheme, 
            scales = list(cex = 1.5),
            colorkey = list(labels = list(cex = 1.5)),
            par.strip.text = list(cex = 1.5), layout = c(3,2)) +
  layer(sp.points(release.pt, pch = 4, cex=1, col="red", alpha = 0.7))

total.density.plots

In this next composite figure I’m only showing densities for the first release cohort.

den.list <- den.fun(ppp = subset(tortoises.santafe, Cohort == "2015"))
tortoise.brick.2015 <- brick(den.list$raster)
# replace negative values with 0
values(tortoise.brick.2015)[values(tortoise.brick.2015) < 0] <- 0
# adjust estimates for imperfect detection
for(i in c(1:6)){
  values(tortoise.brick.2015[[i]]) <- 
    values(tortoise.brick.2015[[i]]) / det.seq[["est"]][i]
}
names(tortoise.brick.2015) <- c("Y2015", "Y2016", "Y2017", 
                                "Y2018", "Y2019", "Y2020")
levelplot(tortoise.brick.2015, par.settings = viridisTheme, 
          scales = list(cex = 1.5),
          colorkey = list(labels = list(cex = 1.5)),
          par.strip.text = list(cex = 1.5), layout = c(3,2),
          main = list("Dispersal of first release cohort", cex = 1.5)) +
  layer(sp.points(release.pt, pch = 4, cex=1, col="red", alpha = 0.7))

At four and a half years since release, the first release cohort is widely dispersed across several spatial clusters.

Let’s now quantify dispersal over time. In this next chunk of code and following figure I look at the kernel density estimates from dispersal distances (Euclidean distance from release point), highlighting the distances of the 50% isopleth with black lines, 95% isopleth with blue lines, and max distances with red lines for each occasion.

movements.data$dist <- sqrt((movements.data$X - 827253)^2 +
                              (movements.data$Y - 9909160)^2)
movements.data$dist[movements.data$Days_ellapsed == 0] <- 0

# density plot function
den.plot <- function(data, cohort, occasion){
  dens <- density(data[data$Cohort %in% cohort & data$occ == occasion,]$dist)
  q95 <- quantile(dens, 0.95)
  q50 <- quantile(dens, 0.50)
  ggplot(data[data$Cohort %in% cohort & data$occ == occasion,], aes(dist)) + 
    geom_density(fill = "grey") + 
    geom_segment(aes(x = q50, xend = q50, yend = 0, y = 0.0075),
                 lwd = 0.8, color = "black", 
                 arrow = arrow(length = unit(0.5, "cm"))) +
    geom_segment(aes(x = q95, xend = q95, yend = 0, y = 0.0075), 
                 lwd = 0.8, color = "blue", 
                 arrow = arrow(length = unit(0.5, "cm"))) +
    geom_segment(aes(x = max(dist), xend = max(dist), yend = 0, y = 0.0075), 
                 lwd = 0.8, color = "red", 
                 arrow = arrow(length = unit(0.5, "cm"))) +
    theme_classic() + mythemes + theme(plot.title = element_text(size = 18)) +
    scale_x_continuous(expand = c(0,0), limits = c(0,2100), 
                       breaks = seq(0,2000,250)) +
    scale_y_continuous(expand = c(0,0), limits = c(0,0.0075)) + 
    geom_rug(sides = "b", alpha= 0.5)
}

# 2015 cohort
## 2015 dispersal plot for 2015 cohort / total
p15_c15 <- den.plot(data = movements.data, cohort = "2015", 
                    occasion = "August 2015") +
  labs(title = "August 2015 (2 months)", x = NULL, y = NULL)
## 2016 dispersal plot for 2015 cohort / total
p16_c15 <- den.plot(data = movements.data, cohort = "2015", 
                    occasion = "June 2016") +
  labs(title = "June 2016 (1 year)", x = NULL, y = NULL)
## 2017 dispersal plot for 2015 cohort
p17_c15 <- den.plot(data = movements.data, cohort = "2015", 
                    occasion = "June 2017") +
  labs(title = "June 2017 (2 years)", x = NULL, y = NULL)
## 2018 dispersal plot for 2015 cohort
p18_c15 <- den.plot(data = movements.data, cohort = "2015", 
                    occasion = "June 2018") +
  labs(title = "June 2018 (3 years)", x = NULL, y = NULL)
## 2019 dispersal plot for 2015 cohort
p19_c15 <- den.plot(data = movements.data, cohort = "2015", 
                    occasion = "August 2019") +
  labs(title = "August 2019 (4 years)", x = NULL, y = NULL)
## 2020 dispersal plot for 2015 cohort
p20_c15 <- den.plot(data = movements.data, cohort = "2015", 
                    occasion = "March 2020") +
  labs(title = "March 2020 (4.5 years)", x = NULL, y = NULL)

# 2017 cohort
## 2017 dispersal plot for 2017 cohort
p17_c17 <- den.plot(data = movements.data, cohort = "2017", 
                    occasion = "June 2017") +
  labs(title = "June 2017 (2 months)", x = NULL, y = NULL)
## 2018 dispersal plot for 2017 cohort
p18_c17 <- den.plot(data = movements.data, cohort = "2017", 
                    occasion = "June 2018") +
  labs(title = "June 2018 (1 year)", x = NULL, y = NULL)
## 2019 dispersal plot for 2017 cohort
p19_c17 <- den.plot(data = movements.data, cohort = "2017", 
                    occasion = "August 2019") +
  labs(title = "August 2019 (2 years)", x = NULL, y = NULL)
## 2020 dispersal plot for 2017 cohort
p20_c17 <- den.plot(data = movements.data, cohort = "2017", 
                    occasion = "March 2020") +
  labs(title = "March 2020 (2.75 years)", x = NULL, y = NULL)

# total
## 2015 dispersal plot for total
p15 <- den.plot(data = movements.data, cohort = "2015", occasion = "August 2015") +
  labs(title="August 2015",x=NULL, y = NULL)
## 2016 dispersal plot for total
p16 <- den.plot(data = movements.data, cohort = "2015", occasion = "June 2016") +
  labs(title="June 2016",x=NULL, y = NULL)
## 2017 dispersal plot for total
p17 <- den.plot(data = movements.data, cohort = c("2015", "2017"), 
                occasion = "June 2017") +
  labs(title="June 2017",x=NULL, y = NULL)
## 2018 dispersal plot for total
p18 <- den.plot(data = movements.data, cohort = c("2015", "2017"), 
                occasion = "June 2018") +
  labs(title="June 2018",x=NULL, y = NULL)
## 2019 dispersal plot for total
p19 <- den.plot(data = movements.data, cohort = c("2015", "2017", "2019"), 
                occasion = "August 2019") + labs(title="August 2019",
                                                 x=NULL, y = NULL)
## 2020 dispersal plot for total
p20 <- den.plot(data = movements.data, cohort = c("2015", "2017", "2019"), 
                occasion = "March 2020") + labs(title="March 2020",
                                                x=NULL, y = NULL)
# 2015 cohort dispersal plot
dispersal_15cohort <- ggarrange(p15_c15, p16_c15, p17_c15, 
                                p18_c15, p19_c15, p20_c15,
                                ncol = 1, nrow = 6)
annotate_figure(dispersal_15cohort,
                top = text_grob("2015 cohort dispersal", 
                                color = "black",size = 20),
                left = text_grob("Density", color = "black", 
                                 size = 18, rot = 90),
                bottom = text_grob("Distance from release (m)", 
                                   color = "black", size = 18))

# 2017 cohort dispersal plot
dispersal_17cohort <- ggarrange(p17_c17, p18_c17, p19_c17, p20_c17, 
                                ncol = 1, nrow = 4)

annotate_figure(dispersal_17cohort,
                top = text_grob("2017 cohort dispersal", 
                                color = "black",size = 20),
                left = text_grob("Density", color = "black", 
                                 size = 18, rot = 90),
                bottom = text_grob("Distance from release (m)", 
                                   color = "black", size = 18))

# Total disperal plot
dispersal_total <- ggarrange(p15, p16, p17, p18, p19, p20, ncol = 1, nrow = 6)

annotate_figure(dispersal_total,
                top = text_grob("Total dispersal (all cohorts)", 
                                color = "black",size = 20),
                left = text_grob("Density", color = "black", 
                                 size = 18, rot = 90),
                bottom = text_grob("Distance from release (m)", 
                                   color = "black", size = 18))

Let’s make this previous visualization another way using ridgeplots. I’ll align these dispersal surfaces with the population size on Santa Fe.

library(ggridges)
library(purrr)
# cumulative N plot
total_pop %>%
  map_df(rev) %>%
  ggplot(aes(x = Year, y = N_hat)) +
  scale_x_reverse() +
  geom_line(lwd = 1) +
  geom_ribbon(aes(x = Year, ymin = 0, ymax = N_hat), fill = "grey") +
  coord_flip() + scale_y_continuous(limits = c(0,600), breaks = c(0,250,500)) +
  scale_x_reverse(limits = c(2020.4, 2014.3), breaks = c(2015:2020)) +
  theme_bw() + mythemes + xlab("Year") + ylab("N-est") -> N.plot

movements.data %>%
  filter(Days_ellapsed > 0 & occ != "April 2019") %>%
  droplevels() %>%
  ggplot(aes(x = dist, y = fct_rev(occ))) +
  stat_density_ridges(quantile_lines = TRUE, quantiles = 2,
                      rel_min_height = 0.01, jittered_points = TRUE,
                      position = position_points_jitter(width = 0.5, height = 0),
                      point_shape = "|", point_size = 1,
                      alpha = 0.7, vline_size = 0.8, vline_color = "blue") +
  theme_bw() + mythemes +
  scale_x_continuous(expand = c(0.02,0), limits = c(0,2000), breaks = seq(0,2000,250)) +
  theme(axis.title.y=element_blank(),
        axis.text.y=element_blank(),
        axis.ticks.y=element_blank()) +
  annotate("text", x = 1500, y = 1.3, label = "March 2020") +
  annotate("text", x = 1500, y = 2.3, label = "August 2019") +
  annotate("text", x = 1500, y = 3.3, label = "June 2018") +
  annotate("text", x = 1500, y = 4.3, label = "June 2017") +
  annotate("text", x = 1500, y = 5.3, label = "June 2016") +
  annotate("text", x = 1500, y = 6.3, label = "August 2015") +
  labs(x = "Distance from release (m)", y = NULL) -> disp.plot

ggarrange(N.plot, disp.plot, widths = c(1, 4), ncol = 2)

Let’s directly contrast the initial (+2 months, +1 year, +2 years) dispersal distances between the first two release cohorts. Here I’ll show the 95% isopleth with dashed lines and the max distance with solid lines.

init.disp.contrast <- 
  movements.data[c(movements.data$Cohort == "2015" & 
                     movements.data$occ == "August 2015") |
                   c(movements.data$Cohort == "2015" & 
                       movements.data$occ == "June 2016") |
                   c(movements.data$Cohort == "2015" & 
                       movements.data$occ == "June 2017") |
                   c(movements.data$Cohort == "2017" & 
                       movements.data$occ == "June 2017") |
                   c(movements.data$Cohort == "2017" & 
                       movements.data$occ == "June 2018") |
                   c(movements.data$Cohort == "2017" & 
                       movements.data$occ == "August 2019"),] 

init.disp.contrast <- 
  init.disp.contrast[is.na(init.disp.contrast$PIT_final) == FALSE,]

init.disp.contrast$Ellapsed <- "1-2 months"
init.disp.contrast$Ellapsed[c(init.disp.contrast$Cohort == "2015" & 
                                init.disp.contrast$occ == "June 2016") |
                              c(init.disp.contrast$Cohort == "2017" &
                                  init.disp.contrast$occ == "June 2018")] <- "1 year"
init.disp.contrast$Ellapsed[c(init.disp.contrast$Cohort == "2015" &
                                init.disp.contrast$occ == "June 2017") |
                              c(init.disp.contrast$Cohort == "2017" &
                                  init.disp.contrast$occ == "August 2019")] <- "2 years"

init.disp.contrast$Ellapsed <- factor(init.disp.contrast$Ellapsed, 
                                      levels = c("1-2 months", "1 year", "2 years"))

disp.sum <- init.disp.contrast %>%
  droplevels() %>%
  group_by(Cohort, Ellapsed) %>%
  summarise(q95 = quantile(dist, 0.95, na.rm = T),
            maxdist = max(dist, na.rm = T)) %>%
  ungroup() 

levels(init.disp.contrast$Cohort) <- c("1", "2", "3")
levels(disp.sum$Cohort) <- c("1", "2")

init.disp.contrast.p <- ggplot(init.disp.contrast, aes(dist)) + 
  geom_density(aes(fill = Cohort), alpha = 0.3, lwd = 0.9) +
  geom_segment(data = disp.sum, aes(x = q95, xend = q95, yend = 0, 
                                    y = Inf, color = Cohort), 
               lwd = 0.8, lty = "dashed") +
  geom_segment(data = disp.sum, 
               aes(x = maxdist, xend = maxdist, 
                   yend = 0, y = Inf, color = Cohort), 
               lwd = 0.8, lty = "solid") +
  geom_text(data = disp.sum, 
            aes(label = floor(q95), x = q95, y = 0.0085, 
                angle = 90, color = Cohort), 
            size = 3, show.legend = FALSE) +
  geom_text(data = disp.sum, 
            aes(label = floor(maxdist), x = maxdist, y = 0.0085, 
                angle = 90, color = Cohort), 
            size = 3, show.legend = FALSE) +
  facet_grid(rows = vars(Ellapsed)) + theme_light() + mythemes +
  theme(plot.title = element_text(size = 18)) + 
  labs(y = "Density", x = "Distance from release (m)") +
  coord_cartesian(ylim = c(0, 0.0075), clip = 'off') +
  scale_x_continuous(expand = c(0.02,0), limits = c(0,1600), 
                     breaks = seq(0,1500,250)) +
  scale_y_continuous(expand = c(0,0)) +
  geom_rug(sides = "b", aes(color = Cohort), show.legend = FALSE) +
  theme(panel.spacing = unit(2, "lines")) + 
  theme(plot.margin = unit(c(2,1,1,1), "lines")) + 
  theme(strip.text = element_text(size = 13))
  
init.disp.contrast.p

A few takeaways:

  1. Tortoises from all three cohorts seem to rapidly disperse within the first two months after release, and become a bit more fixed thereafter. The second cohort seems to disperse a bit more widely than the first in that initial period. This could be evidence of a density-dependent dispersal process.

  2. The first cohort seemed to become spatially fixed two years post-release. This could be a natural dispersal plateau for the population on this island or be due to a sampling bias that missed individuals that were outside of the sampling zone.

Spatial patterns - telemetry data

Let’s also look at dispersal using radiotelemetry data from a sample of the 2015 cohort, tracked for two years, from release to June of 2017. I’ll prepare the data the same way I did for the recapture data.

telemetry <- read.csv("data/telemetry_clean.csv")
telemetry$Frecuencia <- as.factor(telemetry$Frecuencia)
telemetry$Date <- as.Date(telemetry$Date,format='%m-%d-%Y')
telemetry <- telemetry[,4:9]

# create extra rows for the June 2015 origin point for each tortoise
teletemp <- data.frame(Date = as.Date("2015-06-27"),
                       PIT = unique(telemetry$PIT),
                       Frecuencia = unique(telemetry$Frecuencia),
                       Latitud = -0.82076,
                       Longitud = -90.060063,
                       LC_cm = NA)

telemetry <- rbind(telemetry, teletemp)
telemetry$Days_ellapsed <- julian(telemetry$Date, 
                                  origin = as.Date("2015-06-27"))

# write to csv, make projected UTM shapefile in ArcMap
write.csv(telemetry, "data/telemetry_data_GIS.csv")

# read shapefile from ArcMap
telemetry.shp <- readOGR("data/telemetry_data_UTM2.shp")
## OGR data source with driver: ESRI Shapefile 
## Source: "C:\Users\Harrison\Documents\GC\Santa_Fe\Santa_Fe_Git\santa-fe\data\telemetry_data_UTM2.shp", layer: "telemetry_data_UTM2"
## with 97 features
## It has 10 fields
## Integer64 fields read as strings:  Field1 Days_ellap
# here I create new X and Y UTM fields that make coordinates relative to the release point (0,0). this will make it easier to quickly assess dispersal distances in the maps by centering the release point at 0,0.

telemetry.shp$X_corrected <- telemetry.shp$X - 827253
telemetry.shp$Y_corrected <- telemetry.shp$Y - 9909160
telemetry.data <- as.data.frame(telemetry.shp)

Now let’s look at those traces, both in aggregate and color-coded by individual.

traces.tele <- ggplot() +
  geom_polygon(data = santafe, aes(x = santafe$X, y = santafe$Y), 
               fill = "grey") +
  geom_path(data = telemetry.data, 
            aes(x = X_corrected, y = Y_corrected, group = Frecuencia), 
            alpha = 0.4, lwd = 0.6) +
  geom_point(aes(x = 0, y = 0), shape = 4, size = 2, 
             stroke = 1.5, color = "red") +
  theme_classic() + mythemes + coord_equal() +
  labs(x = "Distance from release (m)", y = "Distance from release (m)", 
       title = "", subtitle = "", caption = "") +
  annotate("text", x = 3500, y = 2200, label = "N", size = 8) +
  annotate("text", x = 3500, y = 1600, label = "\u2191", size = 15)

traces.tele

Let’s also look at the same figure but zoomed in and with different colors for each individual.

traces.tele.ind <- ggplot() +
  geom_polygon(data = santafe, 
               aes(x = santafe$X, y = santafe$Y), fill = "grey") +
  geom_path(data = telemetry.data, 
            aes(x = X_corrected, y = Y_corrected, 
                group = Frecuencia, color = Frecuencia), lwd = 0.8) +
  geom_point(aes(x = 0, y = 0), shape = 4, size = 2, 
             stroke = 1.5, color = "black") +
  theme_classic() + mythemes + 
  coord_equal(xlim = c(-1500,1500), ylim = c(-1500, 1500)) + 
  theme(legend.position = "none") + 
  labs(x = "Distance from release (m)", y = "Distance from release (m)", 
       title = "", subtitle = "", caption = "") +
  annotate("text", x = 1400, y = 1400, label = "N", size = 8) +
  annotate("text", x = 1400, y = 1000, label = "\u2191", size = 15)

traces.tele.ind

Summary

Let’s make one final summary table of our dispersal statistics.

Summary of tortoise dispersal on Santa Fe from 2015 to 2020.
Cohort Days since release Median (m) Mean (m) SD (m) 95% isopleth (m) Max (m)
August 2015
2015 47 141.4 148.0 107.2 322.7 800.7
June 2016
2015 368 140.7 161.1 108.4 398.7 610.4
June 2017
2015 719 180.7 304.4 307.0 1106.6 1389.1
2017 57 162.1 182.6 152.6 396.6 941.6
Total 719 164.0 231.3 241.3 788.7 1389.1
June 2018
2015 1079 326.4 393.5 296.1 1063.5 1250.2
2017 419 188.8 229.1 154.1 484.3 863.5
Total 1079 232.0 309.0 247.1 827.6 1250.2
August 2019
2015 1506 662.0 585.2 311.3 1054.9 1284.1
2017 846 288.6 366.4 247.8 819.0 1245.0
2019 165 203.0 245.2 161.6 533.4 836.0
Total 1506 310.0 386.2 273.2 902.7 1284.1
March 2020
2015 1721 482.5 577.5 421.1 1371.9 1850.5
2017 1061 347.3 456.4 402.5 1447.1 1928.6
2019 380 269.5 349.2 296.2 1070.1 1272.6
Total 1721 353.1 470.8 390.8 1322.1 1928.6

Iguana population response

Let’s examine our Santa Fe land iguana data from 2011 to 2020 to see whether the population has been affected by the tortoise introduction so far.

A male Santa Fe land iguana (*Conolophus pallidus*).

A male Santa Fe land iguana (Conolophus pallidus).

I’ll do this using two corroborative data sets:

  1. distance sampling data from transect surveys in 2011, 2017, and 2020

  2. plot counts from 2011 and 2020

Distance sampling data

Original 2011 full-island survey

Let’s first analyze our iguana population data from the full-island survey of transects conducted in 2011.

First we’ll load the iguana and covariate data and prepare it for the distance sampling models in unmarked.

# load packages 
library(unmarked) 

# load iguana data 
iguanas2011 <- read.csv("data/iguanas_distsamp_2011.csv")

# subset by sex
males2011 <- iguanas2011[iguanas2011$TYPE == "ITM",]
females2011 <- iguanas2011[iguanas2011$TYPE == "ITH",]
juveniles2011 <- iguanas2011[iguanas2011$TYPE == "ITJ",]
total2011 <- rbind(males2011, females2011, juveniles2011)

# prepare for unmarked
## male observations
dists_machos <- 
  data.frame(distance = as.numeric(as.character(males2011$DISTANCE)),  
             transect = as.factor(males2011$TRANSECT))
# add in other transects without observations
levels(dists_machos$transect) <- c(levels(dists_machos$transect),
                                   unique(iguanas2011$TRANSECT[
                                     iguanas2011$TRANSECT %notin%
                                     as.character(dists_machos$transect)]))
## female observations
dists_hembras <- 
  data.frame(distance = as.numeric(as.character(females2011$DISTANCE)),  
             transect = as.factor(females2011$TRANSECT))
# add in other transects without observations
levels(dists_hembras$transect) <- c(levels(dists_hembras$transect),
                                   unique(iguanas2011$TRANSECT[
                                     iguanas2011$TRANSECT %notin%
                                     as.character(dists_hembras$transect)]))
## juvenile observations
dists_juvs <- 
  data.frame(distance = as.numeric(as.character(juveniles2011$DISTANCE)), 
             transect = as.factor(juveniles2011$TRANSECT))
# add in other transects without observations
levels(dists_juvs$transect) <- c(levels(dists_juvs$transect),
                                   unique(iguanas2011$TRANSECT[
                                     iguanas2011$TRANSECT %notin%
                                     as.character(dists_juvs$transect)]))

## total observations
dists_all <- 
  data.frame(distance = as.numeric(as.character(total2011$DISTANCE)), 
             transect = as.factor(total2011$TRANSECT))
# add in other transects without observations
levels(dists_all$transect) <- c(levels(dists_all$transect),
                                   unique(iguanas2011$TRANSECT[
                                     iguanas2011$TRANSECT %notin%
                                     as.character(dists_all$transect)]))

# load transect covariate data
covs <- read.csv(file = "data/distsamp_covars.csv", 
                 header = TRUE, row.names="transect") %>%
  mutate(transect = rownames(.)) %>%
  as.data.frame()

Our iguana data were originally recorded at the individual-level with continuous exact distances, but distsamp() requires the data at the transect-level with observations binned by the distance intervals. So we’ll do that for each group here, truncating the data for each at the 0.975 quantile distance for each population to remove outliers (Buckland et al. 2001).

# pool males and females to find common quantile distance for all adults
dists_adults <- rbind(dists_machos, dists_hembras)
dists_adults$quantile <- q.rank(dists_adults$distance)
max.dist.adults <- min(dists_adults$distance[dists_adults$quantile >= 0.975], 
                       na.rm = T)
# all adults
dists_adults %>% arrange(transect) -> dists_adults
yDat_adults <- formatDistData(dists_adults, distCol="distance",
                              transectNameCol="transect",
                              dist.breaks=seq(0, max.dist.adults, length.out = 5))
# reorder data frame by transect order in covariate df for later integration
yDat_adults <- yDat_adults[match(covs$transect, rownames(yDat_adults)),]

# males
yDat_machos <- formatDistData(dists_machos, distCol="distance",
                              transectNameCol="transect",
                              dist.breaks=seq(0, max.dist.adults, length.out = 5))
yDat_machos <- yDat_machos[match(covs$transect, rownames(yDat_machos)),]

# females
yDat_hembras <- formatDistData(dists_hembras, distCol="distance",
                              transectNameCol="transect",
                              dist.breaks=seq(0, max.dist.adults, 
                                              length.out = 5))
yDat_hembras <- yDat_hembras[match(covs$transect, rownames(yDat_hembras)),]

# juveniles (no truncation because of the small sample)
yDat_juvs <- formatDistData(dists_juvs, distCol="distance",
                            transectNameCol="transect", 
                            dist.breaks=seq(0,9,length.out = 5))
yDat_juvs <- yDat_juvs[match(covs$transect, rownames(yDat_juvs)),]

# total
dists_all$quantile <- q.rank(dists_all$distance)
max.dist.all <- min(dists_all$distance[dists_all$quantile >= 0.975], na.rm = T)
yDat_all <- formatDistData(dists_all, distCol="distance",
                           transectNameCol="transect",
                           dist.breaks=seq(0, max.dist.all, length.out = 5))
yDat_all <- yDat_all[match(covs$transect, rownames(yDat_all)),]

Before moving on, we should check for colinearity among our covariates. Note: our covariates were linked to each transect in GIS by extending a 50m buffer around each transect (with flat ends) and calculating mean elevation, slope, and dominant vegetation type and aspect.

Let’s look at the variance inflation factors (VIFs) to see if there is any colinearity.

# get VIFs
corvif(covs[,1:4]) # no colinearity
## 
## 
## Variance inflation factors
## 
##            GVIF Df GVIF^(1/2Df)
## elev   1.153317  1     1.073926
## slope  1.122173  1     1.059326
## aspect 1.223973  3     1.034257
## veg    1.274416  1     1.128900

There doesn’t seem to be any colinearity we need to worry about here.

Now let’s create unmarked distance sampling frames – unmarkedFrameDS() – for each iguana category, pulling together the distance observations and spatial covariates and specifying the metadata for the sampling (i.e., transect length, measurement units, etc.) to make population estimates. We use these unmarkedFrame objects to run our models.

###################################### ADULTS ##################################
umf_adults <- unmarkedFrameDS(y=as.matrix(yDat_adults), 
                              siteCovs=data.frame(elev = covs$elev,
                                                  slope = covs$slope,
                                                  aspect = covs$aspect,
                                                  veg = covs$veg), 
                              survey="line", 
                              dist.breaks=seq(0,max.dist.adults,length.out = 5), 
                              tlength=rep(500, 311), unitsIn="m")
# scale continuous covariates (elevation, slope)
sc <- siteCovs(umf_adults)
sc.s <- cbind(scale(sc[,1:2]), sc[,3:4])
siteCovs(umf_adults) <- sc.s
# summary of male data
summary(umf_adults)
## unmarkedFrameDS Object
## 
## line-transect survey design
## Distance class cutpoints (m):  0 5.75 11.5 17.25 23 
## 
## 311 sites
## Maximum number of distance classes per site: 4 
## Mean number of distance classes per site: 4 
## Sites with at least one detection: 183 
## 
## Tabulation of y observations:
##    0    1    2    3    4    5    6 
## 1030  145   39   20    6    2    2 
## 
## Site-level covariates:
##       elev              slope         aspect          veg     
##  Min.   :-2.32849   Min.   :-1.5374   E: 82   Herbaceous:230  
##  1st Qu.:-0.70876   1st Qu.:-0.6595   N:118   Shrubs    : 81  
##  Median :-0.01134   Median :-0.2766   S: 93                   
##  Mean   : 0.00000   Mean   : 0.0000   W: 18                   
##  3rd Qu.: 0.68651   3rd Qu.: 0.5084                           
##  Max.   : 3.06294   Max.   : 4.6257
hist(umf_adults, xlab="distance (m)", main="Distribution of Adult Distances", 
     cex.lab=0.8, cex.axis=0.8)

###################################### MALES ###################################
# males
umf_machos <- unmarkedFrameDS(y=as.matrix(yDat_machos), 
                              siteCovs=data.frame(elev = covs$elev,
                                                  slope = covs$slope,
                                                  aspect = covs$aspect,
                                                  veg = covs$veg), 
                              survey="line", 
                              dist.breaks=seq(0,max.dist.adults,length.out = 5), 
                              tlength=rep(500, 311), unitsIn="m")
# scale continuous covariates (elevation, slope)
sc <- siteCovs(umf_machos)
sc.s <- cbind(scale(sc[,1:2]), sc[,3:4])
siteCovs(umf_machos) <- sc.s

###################################### FEMALES #################################
# females
umf_hembras <- unmarkedFrameDS(y=as.matrix(yDat_hembras), 
                              siteCovs=data.frame(elev = covs$elev,
                                                  slope = covs$slope,
                                                  aspect = covs$aspect,
                                                  veg = covs$veg), 
                              survey="line", 
                              dist.breaks=seq(0,max.dist.adults,length.out = 5), 
                              tlength=rep(500, 311), unitsIn="m")
# scale continuous covariates (elevation, slope)
sc <- siteCovs(umf_hembras)
sc.s <- cbind(scale(sc[,1:2]), sc[,3:4])
siteCovs(umf_hembras) <- sc.s

###################################### JUVENILES ###############################
# juveniles
umf_juvs <- unmarkedFrameDS(y=as.matrix(yDat_juvs), 
                            siteCovs=data.frame(elev = covs$elev,
                                                slope = covs$slope,
                                                aspect = covs$aspect,
                                                veg = covs$veg), 
                            survey="line", 
                            dist.breaks=seq(0,9,length.out = 5), 
                            tlength=rep(500, 311), unitsIn="m")
# scale continuous covariates (elevation, slope)
sc <- siteCovs(umf_juvs)
sc.s <- cbind(scale(sc[,1:2]), sc[,3:4])
siteCovs(umf_juvs) <- sc.s
# summary of juvenile data
summary(umf_juvs)
## unmarkedFrameDS Object
## 
## line-transect survey design
## Distance class cutpoints (m):  0 2.25 4.5 6.75 9 
## 
## 311 sites
## Maximum number of distance classes per site: 4 
## Mean number of distance classes per site: 4 
## Sites with at least one detection: 28 
## 
## Tabulation of y observations:
##    0    1    2 
## 1211   29    4 
## 
## Site-level covariates:
##       elev              slope         aspect          veg     
##  Min.   :-2.32849   Min.   :-1.5374   E: 82   Herbaceous:230  
##  1st Qu.:-0.70876   1st Qu.:-0.6595   N:118   Shrubs    : 81  
##  Median :-0.01134   Median :-0.2766   S: 93                   
##  Mean   : 0.00000   Mean   : 0.0000   W: 18                   
##  3rd Qu.: 0.68651   3rd Qu.: 0.5084                           
##  Max.   : 3.06294   Max.   : 4.6257
hist(umf_juvs, xlab="distance (m)", main="Distribution of Juvenile Distances", 
     cex.lab=0.8, cex.axis=0.8)

###################################### TOTAL ###################################
# total
umf_all <- unmarkedFrameDS(y=as.matrix(yDat_all), 
                           siteCovs=data.frame(elev = covs$elev,
                                               slope = covs$slope,
                                               aspect = covs$aspect,
                                               veg = covs$veg), 
                           survey="line", 
                           dist.breaks = seq(0,max.dist.all,length.out = 5), 
                           tlength=rep(500, 311), unitsIn="m")
# scale continuous covariates (elevation, slope)
sc <- siteCovs(umf_all)
sc.s <- cbind(scale(sc[,1:2]), sc[,3:4])
siteCovs(umf_all) <- sc.s
# summary of female data
summary(umf_all)
## unmarkedFrameDS Object
## 
## line-transect survey design
## Distance class cutpoints (m):  0 5.75 11.5 17.25 23 
## 
## 311 sites
## Maximum number of distance classes per site: 4 
## Mean number of distance classes per site: 4 
## Sites with at least one detection: 189 
## 
## Tabulation of y observations:
##    0    1    2    3    4    5    6    8 
## 1021  138   49   22   10    2    1    1 
## 
## Site-level covariates:
##       elev              slope         aspect          veg     
##  Min.   :-2.32849   Min.   :-1.5374   E: 82   Herbaceous:230  
##  1st Qu.:-0.70876   1st Qu.:-0.6595   N:118   Shrubs    : 81  
##  Median :-0.01134   Median :-0.2766   S: 93                   
##  Mean   : 0.00000   Mean   : 0.0000   W: 18                   
##  3rd Qu.: 0.68651   3rd Qu.: 0.5084                           
##  Max.   : 3.06294   Max.   : 4.6257
hist(umf_all, xlab="distance (m)", main="Distribution of Iguana Distances", 
     cex.lab=0.8, cex.axis=0.8)

   

Total iguanas


Let’s first build models for the full iguana population. We’ll identify the most suitable detection function for all iguanas and use that going forward for model selection.

all.hazard <- distsamp(
  ~veg 
  ~elev+I(elev^2)+slope+aspect+veg, 
  umf_all, keyfun="hazard", output="density", unitsOut="ha", rel.tol=0.001)

all.halfnorm <- distsamp(
  ~veg
  ~elev+I(elev^2)+slope+aspect+veg, 
  umf_all, keyfun="halfnorm", output="density", unitsOut="ha", rel.tol=0.001)

all.negexp <- distsamp(
  ~veg
  ~elev+I(elev^2)+slope+aspect+veg, 
  umf_all, keyfun="exp", output="density", unitsOut="ha", rel.tol=0.001)

library(AICcmodavg)
aictab(cand.set = list(all.hazard, all.halfnorm, all.negexp),
     modnames = c("hazard", "halfnorm", "negative exponential"))
## 
## Model selection based on AICc:
## 
##                       K    AICc Delta_AICc AICcWt Cum.Wt      LL
## hazard               11 1298.53       0.00   0.78   0.78 -637.83
## negative exponential 10 1301.08       2.55   0.22   1.00 -640.17
## halfnorm             10 1341.34      42.81   0.00   1.00 -660.31

The hazard function appears to be the best for our iguana data.

Let’s now run a goodness of fit test on the global iguana model to decide whether our model structure is appropriate or if we need to account for overdispersion.

fitstats <- function(fm) {
    observed <- getY(fm@data)
    expected <- fitted(fm)
    resids <- residuals(fm)
    sse <- sum(resids^2)
    chisq <- sum((observed - expected)^2 / expected, na.rm = TRUE)
    freeTuke <- sum((sqrt(observed) - sqrt(expected))^2, na.rm = TRUE)
    out <- c(SSE=sse, Chisq=chisq, freemanTukey=freeTuke)
    return(out)
}

set.seed(1)
GoF.all <- parboot(all.hazard, fitstats, nsim=1000, report=5)
## t0 = 503.3283 1498.096 255.8762
GoF.all
## 
## Call: 
## parboot(object = all.hazard, statistic = fitstats, nsim = 1000, report = 5)
## 
## Parametric Bootstrap Statistics:
##                t0 mean(t0 - t_B) StdDev(t0 - t_B) Pr(t_B > t0)
## SSE           503          145.0             30.3        0.000
## Chisq        1498          270.1            107.5        0.023
## freemanTukey  256           36.8             11.0        0.000
## 
## t_B quantiles:
##               0% 2.5%  25%  50%  75% 97.5% 100%
## SSE          273  303  338  357  379   425  455
## Chisq        913 1055 1153 1218 1291  1483 1646
## freemanTukey 188  199  211  219  227   241  254
## 
## t0 = Original statistic computed from data
## t_B = Vector of bootstrap samples
par(mfrow = c(3,1))
plot(GoF.all)

c.hat.all <- GoF.all@t0[2] / mean(GoF.all@t.star[,2]); c.hat.all
##    Chisq 
## 1.219923

Our global model has some issues with goodness of fit. The c-hat value is acceptable, but the model performs poorly on all three goodness of fit tests. Let’s see if using a negative binomial distribution improves the model fit with gdistsamp.

In this case, we won’t fit anything for phi (just the intercept), which is the availability parameter.

umf_all_g <- unmarkedFrameGDS(y=as.matrix(yDat_all), 
                              siteCovs=data.frame(elev = covs$elev,
                                                  slope = covs$slope,
                                                  aspect = covs$aspect,
                                                  veg = covs$veg), 
                              survey="line", 
                              dist.breaks=seq(0,max.dist.all,length.out = 5), 
                              tlength=rep(500, 311), unitsIn="m", numPrimary = 1)
# scale continuous covariates (elevation, slope)
sc <- siteCovs(umf_all_g)
sc.s <- cbind(scale(sc[,1:2]), sc[,3:4])
siteCovs(umf_all_g) <- sc.s

all.hazard.nb <- gdistsamp(
  ~elev+I(elev^2)+slope+aspect+veg, 
  ~1, 
  ~veg,
  mixture = "NB",
  umf_all_g, keyfun="hazard", output="density", unitsOut="ha", rel.tol=0.001)

set.seed(1)
GoF.all.nb <- parboot(all.hazard.nb, fitstats, nsim=1000, report=5)
## t0 = 613.4983 3716.53 211.1958
GoF.all.nb
## 
## Call: 
## parboot(object = all.hazard.nb, statistic = fitstats, nsim = 1000, report = 5)
## 
## Parametric Bootstrap Statistics:
##                t0 mean(t0 - t_B) StdDev(t0 - t_B) Pr(t_B > t0)
## SSE           613          26.80             69.9        0.325
## Chisq        3717         312.72            287.9        0.126
## freemanTukey  211           7.12             10.7        0.252
## 
## t_B quantiles:
##                0% 2.5%  25%  50%  75% 97.5% 100%
## SSE           407  461  537  582  631   731  900
## Chisq        2576 2943 3211 3371 3557  4067 5424
## freemanTukey  174  184  197  203  211   224  243
## 
## t0 = Original statistic computed from data
## t_B = Vector of bootstrap samples
par(mfrow = c(3,1))
plot(GoF.all.nb)

c.hat.all.nb <- GoF.all.nb@t0[2] / mean(GoF.all.nb@t.star[,2]); c.hat.all.nb
##    Chisq 
## 1.091874

The negative binomial abundance model yields a much better model fit, so let’s stick with this for all our iguana model groups.

We will use the following candidate model list for all iguana groups.

all <- list() # make a list to store macho models
all$null <- gdistsamp(lambdaformula = ~1,
                         phiformula = ~1, 
                         pformula = ~1, 
                         umf_all_g, mixture = "NB",
                         keyfun="hazard", output="density", unitsOut="ha")

all$elev <- gdistsamp(lambdaformula = ~elev, 
                         phiformula = ~1, 
                         pformula = ~1, 
                         umf_all_g, mixture = "NB",
                         keyfun="hazard", output="density", unitsOut="ha")

all$elev2 <- gdistsamp(lambdaformula = ~elev+I(elev^2), 
                          phiformula = ~1, 
                          pformula = ~1, 
                          umf_all_g, mixture = "NB",
                          keyfun="hazard", output="density", unitsOut="ha")

all$slope <- gdistsamp(lambdaformula = ~slope,  
                          phiformula = ~1, 
                          pformula = ~1,
                          umf_all_g, mixture = "NB",
                          keyfun="hazard", output="density", unitsOut="ha")

all$aspect <- gdistsamp(lambdaformula = ~aspect, 
                           phiformula = ~1, 
                           pformula = ~1, 
                           umf_all_g, mixture = "NB",
                           keyfun="hazard", output="density", unitsOut="ha")

all$veg <- gdistsamp(lambdaformula = ~veg, 
                        phiformula = ~1, 
                        pformula = ~1, 
                        umf_all_g, mixture = "NB",
                        keyfun="hazard", output="density", unitsOut="ha")

all$topo <- gdistsamp(lambdaformula = ~elev+slope+aspect, 
                         phiformula = ~1, 
                         pformula = ~1, 
                         umf_all_g, mixture = "NB",
                         keyfun="hazard", output="density", unitsOut="ha")

all$topo2 <- gdistsamp(lambdaformula = ~elev+I(elev^2)+slope+aspect, 
                          phiformula = ~1, 
                          pformula = ~1, 
                          umf_all_g, mixture = "NB",
                          keyfun="hazard", output="density", unitsOut="ha")

all$subglobal <- gdistsamp(lambdaformula = ~elev+slope+aspect+veg, 
                              phiformula = ~1, 
                              pformula = ~1, 
                              umf_all_g, mixture = "NB",
                              keyfun="hazard", output="density", unitsOut="ha")

all$global <- gdistsamp(lambdaformula = ~elev+I(elev^2)+slope+aspect+veg, 
                           phiformula = ~1, 
                           pformula = ~1, 
                           umf_all_g, mixture = "NB",
                           keyfun="hazard", output="density", unitsOut="ha")

all$p.null <- gdistsamp(lambdaformula = ~1, 
                           phiformula = ~1, 
                           pformula = ~veg, 
                           umf_all_g, mixture = "NB",
                           keyfun="hazard", output="density", unitsOut="ha")

all$p.elev <- gdistsamp(lambdaformula = ~elev, 
                           phiformula = ~1, 
                           pformula = ~veg, 
                           umf_all_g, mixture = "NB",
                           keyfun="hazard", output="density", unitsOut="ha")

all$p.elev2 <- gdistsamp(lambdaformula = ~elev+I(elev^2), 
                            phiformula = ~1, 
                            pformula = ~veg, 
                            umf_all_g, mixture = "NB",
                            keyfun="hazard", output="density", unitsOut="ha")

all$p.slope <- gdistsamp(lambdaformula = ~slope, 
                            phiformula = ~1, 
                            pformula = ~veg, 
                            umf_all_g, mixture = "NB",
                            keyfun="hazard", output="density", unitsOut="ha")

all$p.aspect <- gdistsamp(lambdaformula = ~aspect, 
                             phiformula = ~1, 
                             pformula = ~veg, 
                             umf_all_g, mixture = "NB",
                             keyfun="hazard", output="density", unitsOut="ha")

all$p.veg <- gdistsamp(lambdaformula = ~veg, 
                          phiformula = ~1, 
                          pformula = ~veg, 
                          umf_all_g, mixture = "NB",
                          keyfun="hazard", output="density", unitsOut="ha")

all$p.topo <- gdistsamp(lambdaformula = ~elev+slope+aspect, 
                           phiformula = ~1, 
                           pformula = ~veg, 
                           umf_all_g, mixture = "NB",
                           keyfun="hazard", output="density", unitsOut="ha")

all$p.topo2 <- gdistsamp(lambdaformula = ~elev+I(elev^2)+slope+aspect, 
                            phiformula = ~1, 
                            pformula = ~veg, 
                            umf_all_g, mixture = "NB",
                            keyfun="hazard", output="density", unitsOut="ha")

all$p.subglobal <- gdistsamp(lambdaformula = ~elev+slope+aspect+veg, 
                                phiformula = ~1, 
                                pformula = ~veg, 
                                umf_all_g, mixture = "NB",
                                keyfun="hazard", output="density", unitsOut="ha")

all$p.global <- gdistsamp(lambdaformula = ~elev+I(elev^2)+slope+aspect+veg, 
                             phiformula = ~1, 
                             pformula = ~veg, 
                             umf_all_g, mixture = "NB",
                             keyfun="hazard", output="density", unitsOut="ha")

# Making a QAIC table - list of all models for ranking
library(AICcmodavg)
# make custom model names showing the variables
modnames <- c("lambda(.) p(.)", 
              "lambda(elev) p(.)", 
              "lambda(elev + elev^2^) p(.)",
              "lambda(slope) p(.)", 
              "lambda(aspect) p(.)",
              "lambda(veg) p(.)", 
              "lambda(elev + slope + aspect) p(.)", 
              "lambda(elev + elev^2^ + slope + aspect) p(.)",
              "lambda(elev + slope + aspect + veg) p(.)", 
              "lambda(elev + elev^2^ + slope + aspect + veg) p(.)", 
              "lambda(.) p(veg)", 
              "lambda(elev) p(veg)", 
              "lambda(elev + elev^2^) p(veg)",
              "lambda(slope) p(veg)", 
              "lambda(aspect) p(veg)", 
              "lambda(veg) p(veg)", 
              "lambda(elev + slope + aspect) p(veg)",
              "lambda(elev + elev^2^ + slope + aspect) p(veg)",
              "lambda(elev + slope + aspect + veg) p(veg)",
              "lambda(elev + elev^2^ + slope + aspect + veg) p(veg)")

# Rank by QAIC and print 
all.rankings <- as.data.frame(aictab(cand.set = all, 
                                        modnames = modnames,
                                        c.hat = c.hat.all.nb, second.ord = FALSE, 
                                        sort = TRUE))

all.rankings$Deviance <- round(-2*all.rankings$Quasi.LL,2) # get deviances
all.rankings <- all.rankings[,c(1,2,4,6,9,10)]
colnames(all.rankings) <- c("Model", "K", "Delta_QAIC", 
                               "QAIC_wt.", "Cum. weight", "Deviance")

kable(all.rankings, "html", row.names = FALSE, 
      caption = "Poisson abundance model rankings for total iguanas", 
      digits = 3) %>% 
  kable_styling(bootstrap_options = c("striped", "condensed")) %>%
  scroll_box(height = "350px")
Poisson abundance model rankings for total iguanas
Model K Delta_QAIC QAIC_wt. Cum. weight Deviance
lambda(aspect) p(veg) 9 0.000 0.550 0.550 909.49
lambda(elev + elev2 + slope + aspect) p(veg) 12 2.296 0.175 0.725 905.78
lambda(elev + slope + aspect) p(veg) 11 3.655 0.089 0.814 909.14
lambda(elev + elev2 + slope + aspect + veg) p(veg) 13 4.173 0.068 0.882 905.66
lambda(elev + slope + aspect + veg) p(veg) 12 5.574 0.034 0.916 909.06
lambda(elev + elev2 + slope + aspect + veg) p(.) 12 5.971 0.028 0.944 909.46
lambda(aspect) p(.) 8 7.060 0.016 0.960 918.55
lambda(elev + elev2 + slope + aspect) p(.) 11 7.248 0.015 0.974 912.73
lambda(elev + slope + aspect + veg) p(.) 11 7.371 0.014 0.988 912.86
lambda(elev + slope + aspect) p(.) 10 9.014 0.006 0.994 916.50
lambda(.) p(veg) 6 11.649 0.002 0.996 927.14
lambda(elev + elev2) p(veg) 8 12.347 0.001 0.997 923.83
lambda(elev) p(veg) 7 13.230 0.001 0.998 926.72
lambda(veg) p(veg) 7 13.433 0.001 0.998 926.92
lambda(slope) p(veg) 7 13.649 0.001 0.999 927.14
lambda(elev + elev2) p(.) 7 15.050 0.000 0.999 928.54
lambda(veg) p(.) 6 15.230 0.000 1.000 930.72
lambda(.) p(.) 5 16.463 0.000 1.000 933.95
lambda(elev) p(.) 6 16.610 0.000 1.000 932.10
lambda(slope) p(.) 6 18.327 0.000 1.000 933.81
write.csv(all.rankings, "data/iguana_all_QAIC.csv")

It seems like aspect is overwhelmingly driving iguana distributions, with more iguanas in areas with north and west-facing slopes. There is still some model uncertainty, with several other models within 6 QAIC units and a cumulative weight of 0.95.

Let’s follow the same approach for all our iguana subgroups. I don’t show all the code for these sections, as they will be virtually the same as what was presented above.

Male and female adult iguanas should display the same detection function, so let’s examine goodness of fit on a pooled adult dataset rather than each sex individually.

adults.hazard <- distsamp(
  ~veg 
  ~elev+I(elev^2)+slope+aspect+veg, 
  umf_adults, keyfun="hazard", output="density", unitsOut="ha", rel.tol=0.0001)

adults.halfnorm <- distsamp(
  ~veg
  ~elev+I(elev^2)+slope+aspect+veg, 
  umf_adults, keyfun="halfnorm", output="density", unitsOut="ha", rel.tol=0.0001)

adults.negexp <- distsamp(
  ~veg
  ~elev+I(elev^2)+slope+aspect+veg, 
  umf_adults, keyfun="exp", output="density", unitsOut="ha", rel.tol=0.0001)

aictab(cand.set = list(adults.hazard, adults.halfnorm, adults.negexp),
     modnames = c("hazard", "halfnorm", "negative exponential"))
## 
## Model selection based on AICc:
## 
##                       K    AICc Delta_AICc AICcWt Cum.Wt      LL
## hazard               11 1221.68       0.00   0.81   0.81 -599.40
## negative exponential 10 1224.63       2.95   0.19   1.00 -601.95
## halfnorm             10 1262.43      40.75   0.00   1.00 -620.85

The hazard function again is what we probably want. Let’s examine goodness of fit.

set.seed(12)
GoF.adults <- parboot(adults.hazard, fitstats, nsim=1000, report=5)
## t0 = 426.3899 1491.163 238.4203
GoF.adults
## 
## Call: 
## parboot(object = adults.hazard, statistic = fitstats, nsim = 1000, report = 5)
## 
## Parametric Bootstrap Statistics:
##                t0 mean(t0 - t_B) StdDev(t0 - t_B) Pr(t_B > t0)
## SSE           426          104.0             29.4     0.000999
## Chisq        1491          -60.6          10101.4     0.028971
## freemanTukey  238           25.4             10.8     0.008991
## 
## t_B quantiles:
##               0% 2.5%  25%  50%  75% 97.5%   100%
## SSE          250  269  301  320  342   386    439
## Chisq        965 1037 1148 1219 1292  1525 320642
## freemanTukey 181  193  206  213  221   234    249
## 
## t0 = Original statistic computed from data
## t_B = Vector of bootstrap samples
par(mfrow = c(3,1))
plot(GoF.adults)

c.hat.adults <- GoF.adults@t0[2] / mean(GoF.adults@t.star[,2]); c.hat.adults
##     Chisq 
## 0.9609336

Let’s look at the negative binomial global hazard model fit statistics for adults.

umf_adults_g <- unmarkedFrameGDS(y=as.matrix(yDat_adults), 
                                 siteCovs=data.frame(elev = covs$elev,
                                                     slope = covs$slope,
                                                     aspect = covs$aspect,
                                                     veg = covs$veg), 
                                 survey="line", 
                                 dist.breaks=seq(0, max.dist.adults,
                                                 length.out = 5), 
                                 tlength=rep(500, 311), 
                                 unitsIn="m", 
                                 numPrimary = 1)
# scale continuous covariates (elevation, slope)
sc <- siteCovs(umf_adults_g)
sc.s <- cbind(scale(sc[,1:2]), sc[,3:4])
siteCovs(umf_adults_g) <- sc.s

adults.hazard.nb <- gdistsamp(
  ~elev+I(elev^2)+slope+aspect+veg, 
  ~1, 
  ~veg,
  mixture = "NB",
  umf_adults_g, keyfun="hazard", output="density", unitsOut="ha", rel.tol=0.001)

set.seed(1)
GoF.adults.nb <- parboot(adults.hazard.nb, fitstats, nsim=1000, report=5)
## t0 = 515.4821 3670.65 195.402
GoF.adults.nb
## 
## Call: 
## parboot(object = adults.hazard.nb, statistic = fitstats, nsim = 1000, report = 5)
## 
## Parametric Bootstrap Statistics:
##                t0 mean(t0 - t_B) StdDev(t0 - t_B) Pr(t_B > t0)
## SSE           515          20.70            57.44        0.339
## Chisq        3671         360.17           310.24        0.112
## freemanTukey  195           4.33             9.93        0.326
## 
## t_B quantiles:
##                0% 2.5%  25%  50%  75% 97.5% 100%
## SSE           330  396  452  492  532   613  717
## Chisq        2516 2845 3110 3262 3451  4024 5663
## freemanTukey  159  173  184  191  198   211  220
## 
## t0 = Original statistic computed from data
## t_B = Vector of bootstrap samples
par(mfrow = c(3,1))
plot(GoF.adults.nb)

c.hat.adults.nb <- GoF.adults.nb@t0[2] / mean(GoF.adults.nb@t.star[,2]) 
c.hat.adults.nb
##    Chisq 
## 1.108797

This model fits the goodness of fit tests, with minimal additional overdispersion. Let’s compare models for male and female iguanas using this distribution and c-hat correction.    

Male iguanas


First we need to create a new unmarkedFrameGDS for male iguanas.

umf_machos_g <- unmarkedFrameGDS(y=as.matrix(yDat_machos), 
                                 siteCovs=data.frame(elev = covs$elev,
                                                     slope = covs$slope,
                                                     aspect = covs$aspect,
                                                     veg = covs$veg), 
                                 survey="line", 
                                 dist.breaks=seq(0, max.dist.adults,
                                                 length.out = 5), 
                                 tlength=rep(500, 311), 
                                 unitsIn="m", 
                                 numPrimary = 1)
# scale continuous covariates (elevation, slope)
sc <- siteCovs(umf_machos_g)
sc.s <- cbind(scale(sc[,1:2]), sc[,3:4])
siteCovs(umf_machos_g) <- sc.s

Now let’s build and rank our candidate model suite for male iguanas.

Poisson abundance model rankings for male iguanas
Model K Delta_QAIC QAIC_wt. Cum. weight Deviance
lambda(aspect) p(veg) 9 0.000 0.529 0.529 651.76
lambda(elev + elev2 + slope + aspect) p(veg) 12 2.502 0.151 0.681 648.26
lambda(elev + slope + aspect) p(veg) 11 3.204 0.107 0.787 650.96
lambda(elev + elev2 + slope + aspect + veg) p(veg) 13 4.500 0.056 0.843 648.26
lambda(elev + elev2 + slope + aspect + veg) p(.) 12 4.812 0.048 0.891 650.57
lambda(elev + slope + aspect + veg) p(veg) 12 5.195 0.039 0.930 650.96
lambda(elev + slope + aspect + veg) p(.) 11 5.507 0.034 0.964 653.27
lambda(.) p(veg) 6 8.709 0.007 0.971 666.47
lambda(elev + elev2) p(veg) 8 8.890 0.006 0.977 662.65
lambda(elev + elev2 + slope + aspect) p(.) 11 9.373 0.005 0.982 657.13
lambda(elev) p(veg) 7 9.681 0.004 0.986 665.44
lambda(aspect) p(.) 8 10.158 0.003 0.989 663.92
lambda(elev + slope + aspect) p(.) 10 10.569 0.003 0.992 660.33
lambda(slope) p(veg) 7 10.707 0.003 0.994 666.47
lambda(veg) p(veg) 7 10.708 0.003 0.997 666.47
lambda(veg) p(.) 6 11.020 0.002 0.999 668.78
lambda(elev + elev2) p(.) 7 13.538 0.001 1.000 669.30
lambda(elev) p(.) 6 15.085 0.000 1.000 672.85
lambda(.) p(.) 5 16.477 0.000 1.000 676.24
lambda(slope) p(.) 6 18.255 0.000 1.000 676.02

Similar rankings to the full iguana population.

machos$p.aspect
## 
## Call:
## gdistsamp(lambdaformula = ~aspect, phiformula = ~1, pformula = ~veg, 
##     data = umf_machos_g, keyfun = "hazard", output = "density", 
##     unitsOut = "ha", mixture = "NB")
## 
## Abundance:
##             Estimate    SE      z  P(>|z|)
## (Intercept)   -0.137 0.277 -0.495 0.620377
## aspectN        0.605 0.213  2.839 0.004522
## aspectS        0.160 0.231  0.692 0.489136
## aspectW        0.988 0.290  3.409 0.000652
## 
## Detection:
##             Estimate    SE     z  P(>|z|)
## (Intercept)    1.325 0.300  4.41 1.01e-05
## vegShrubs     -0.664 0.199 -3.33 8.64e-04
## 
## Hazard-rate(scale):
##  Estimate    SE    z  P(>|z|)
##     0.993 0.223 4.45 8.71e-06
## 
## Dispersion:
##  Estimate   SE    z P(>|z|)
##      2.51 1.76 1.43   0.154
## 
## AIC: 738.671

Aspect seems to be important and vegetation type affects detection.

   

Female iguanas


umf_hembras_g <- unmarkedFrameGDS(y=as.matrix(yDat_hembras), 
                                 siteCovs=data.frame(elev = covs$elev,
                                                     slope = covs$slope,
                                                     aspect = covs$aspect,
                                                     veg = covs$veg), 
                                 survey="line", 
                                 dist.breaks=seq(0, max.dist.adults,
                                                 length.out = 5), 
                                 tlength=rep(500, 311), 
                                 unitsIn="m", 
                                 numPrimary = 1)
# scale continuous covariates (elevation, slope)
sc <- siteCovs(umf_hembras_g)
sc.s <- cbind(scale(sc[,1:2]), sc[,3:4])
siteCovs(umf_hembras_g) <- sc.s
Poisson abundance model rankings for female iguanas
Model K Delta_QAIC QAIC_wt. Cum. weight Deviance
lambda(aspect) p(veg) 9 0.000 0.360 0.360 641.36
lambda(aspect) p(.) 8 2.097 0.126 0.486 645.45
lambda(.) p(veg) 6 2.697 0.094 0.580 650.05
lambda(.) p(.) 5 3.788 0.054 0.634 653.14
lambda(elev + slope + aspect) p(veg) 11 3.875 0.052 0.686 641.23
lambda(veg) p(veg) 7 4.103 0.046 0.732 649.46
lambda(slope) p(veg) 7 4.625 0.036 0.768 649.98
lambda(veg) p(.) 6 4.669 0.035 0.803 652.03
lambda(elev) p(veg) 7 4.674 0.035 0.838 650.03
lambda(elev + slope + aspect + veg) p(veg) 12 5.597 0.022 0.860 640.95
lambda(elev) p(.) 6 5.630 0.022 0.881 652.99
lambda(elev + elev2 + slope + aspect) p(veg) 12 5.761 0.020 0.901 641.12
lambda(slope) p(.) 6 5.787 0.020 0.921 653.14
lambda(elev + slope + aspect) p(.) 10 6.001 0.018 0.939 645.36
lambda(elev + slope + aspect + veg) p(.) 11 6.163 0.017 0.956 643.52
lambda(elev + elev2) p(veg) 8 6.619 0.013 0.969 649.98
lambda(elev + elev2 + slope + aspect + veg) p(veg) 13 7.469 0.009 0.978 640.83
lambda(elev + elev2) p(.) 7 7.471 0.009 0.986 652.83
lambda(elev + elev2 + slope + aspect) p(.) 11 7.804 0.007 0.994 645.16
lambda(elev + elev2 + slope + aspect + veg) p(.) 12 8.035 0.006 1.000 643.39

Similar rankings to the full iguana and male populations.

hembras$p.aspect
## 
## Call:
## gdistsamp(lambdaformula = ~aspect, phiformula = ~1, pformula = ~veg, 
##     data = umf_hembras_g, keyfun = "hazard", output = "density", 
##     unitsOut = "ha", mixture = "NB")
## 
## Abundance:
##             Estimate    SE      z P(>|z|)
## (Intercept)  -0.4377 0.303 -1.446  0.1482
## aspectN       0.5136 0.244  2.104  0.0354
## aspectS       0.0519 0.269  0.193  0.8473
## aspectW       0.8566 0.357  2.398  0.0165
## 
## Detection:
##             Estimate    SE     z  P(>|z|)
## (Intercept)    1.381 0.350  3.95 0.000079
## vegShrubs     -0.424 0.206 -2.06 0.039296
## 
## Hazard-rate(scale):
##  Estimate    SE    z  P(>|z|)
##     0.809 0.238 3.39 0.000688
## 
## Dispersion:
##  Estimate    SE    z P(>|z|)
##     0.829 0.538 1.54   0.123
## 
## AIC: 727.1347

   

Juvenile iguanas


Let’s now examine juvenile iguana distance sampling models.

juvs.hazard <- distsamp(
  ~veg 
  ~elev+I(elev^2)+slope+aspect+veg, 
  umf_juvs, keyfun="hazard", output="density", unitsOut="ha", rel.tol=0.0001)

juvs.halfnorm <- distsamp(
  ~veg
  ~elev+I(elev^2)+slope+aspect+veg, 
  umf_juvs, keyfun="halfnorm", output="density", unitsOut="ha", rel.tol=0.0001)

juvs.negexp <- distsamp(
  ~veg
  ~elev+I(elev^2)+slope+aspect+veg, 
  umf_juvs, keyfun="exp", output="density", unitsOut="ha", rel.tol=0.0001)

aictab(cand.set = list(juvs.hazard, juvs.halfnorm, juvs.negexp),
     modnames = c("hazard", "halfnorm", "negative exponential"))
## 
## Model selection based on AICc:
## 
##                       K   AICc Delta_AICc AICcWt Cum.Wt      LL
## halfnorm             10 334.77       0.00   0.39   0.39 -157.02
## negative exponential 10 334.89       0.12   0.37   0.77 -157.08
## hazard               11 335.82       1.05   0.23   1.00 -156.47

All three detection functions perform similarly. Let’s compare the GoF of the half normal and negative exponential functions.

set.seed(12)
GoF.juvs.hn <- parboot(juvs.halfnorm, fitstats, nsim=1000, report=5)
## t0 = 42.89105 1360.422 59.04461
GoF.juvs.hn
## 
## Call: 
## parboot(object = juvs.halfnorm, statistic = fitstats, nsim = 1000, report = 5)
## 
## Parametric Bootstrap Statistics:
##                  t0 mean(t0 - t_B) StdDev(t0 - t_B) Pr(t_B > t0)
## SSE            42.9           6.51             6.22        0.148
## Chisq        1360.4         193.06           321.47        0.102
## freemanTukey   59.0           2.48             8.13        0.387
## 
## t_B quantiles:
##               0% 2.5%  25%  50%  75% 97.5% 100%
## SSE           19   25   32   36   40    50   59
## Chisq        690  867 1026 1122 1224  1712 5865
## freemanTukey  32   41   51   56   62    73   81
## 
## t0 = Original statistic computed from data
## t_B = Vector of bootstrap samples
par(mfrow = c(3,1))
plot(GoF.juvs.hn)

c.hat.juvs.hn <- GoF.juvs.hn@t0[2] / mean(GoF.juvs.hn@t.star[,2]); 
c.hat.juvs.hn
##    Chisq 
## 1.165383
set.seed(12)
GoF.juvs.neg <- parboot(juvs.negexp, fitstats, nsim=1000, report=5)
## t0 = 42.79944 1334.971 58.97153
GoF.juvs.neg
## 
## Call: 
## parboot(object = juvs.negexp, statistic = fitstats, nsim = 1000, report = 5)
## 
## Parametric Bootstrap Statistics:
##                  t0 mean(t0 - t_B) StdDev(t0 - t_B) Pr(t_B > t0)
## SSE            42.8           6.43             6.25        0.147
## Chisq        1335.0         151.24           258.63        0.126
## freemanTukey   59.0           2.52             8.16        0.385
## 
## t_B quantiles:
##               0% 2.5%  25%  50%  75% 97.5% 100%
## SSE           19   26   32   36   40    49   58
## Chisq        718  907 1062 1143 1242  1820 4228
## freemanTukey  32   42   51   56   62    73   83
## 
## t0 = Original statistic computed from data
## t_B = Vector of bootstrap samples
par(mfrow = c(3,1))
plot(GoF.juvs.neg)

c.hat.juvs.neg <- GoF.juvs.neg@t0[2] / mean(GoF.juvs.neg@t.star[,2]); 
c.hat.juvs.neg
##    Chisq 
## 1.127765
The negative exponential function provides a slightly lower c-hat, so let’s go with that function.
Poisson abundance model rankings for juvenile iguanas
Model K Delta_QAIC QAIC_wt. Cum. weight Deviance
lambda(elev + elev2) p(.) 5 0.000 0.263 0.263 283.89
lambda(elev + elev2) p(veg) 6 0.148 0.244 0.507 282.04
lambda(veg) p(.) 4 2.101 0.092 0.599 287.99
lambda(.) p(.) 3 2.288 0.084 0.683 290.18
lambda(.) p(veg) 4 2.957 0.060 0.743 288.85
lambda(slope) p(.) 4 4.048 0.035 0.777 289.94
lambda(veg) p(veg) 5 4.100 0.034 0.811 287.99
lambda(elev) p(.) 4 4.288 0.031 0.842 290.18
lambda(slope) p(veg) 5 4.552 0.027 0.869 288.44
lambda(elev + elev2 + slope + aspect) p(.) 9 4.646 0.026 0.895 280.53
lambda(elev + elev2 + slope + aspect + veg) p(.) 10 4.682 0.025 0.920 278.57
lambda(elev) p(veg) 5 4.829 0.024 0.944 288.72
lambda(elev + elev2 + slope + aspect) p(veg) 10 5.549 0.016 0.960 279.44
lambda(aspect) p(.) 6 5.749 0.015 0.975 287.64
lambda(elev + elev2 + slope + aspect + veg) p(veg) 11 6.680 0.009 0.984 278.57
lambda(aspect) p(veg) 7 7.120 0.007 0.992 287.01
lambda(elev + slope + aspect) p(.) 8 8.932 0.003 0.995 286.82
lambda(elev + slope + aspect + veg) p(.) 9 9.189 0.003 0.997 285.08
lambda(elev + slope + aspect) p(veg) 9 9.990 0.002 0.999 285.88
lambda(elev + slope + aspect + veg) p(veg) 10 11.188 0.001 1.000 285.08

We see some support for an elevation effect on juvenile iguanas. The null model is ranked close to the top though, which may be due to the limited amount of data on juvenile iguanas in this dataset. No support really for a vegetation effect on detection.

juvs$elev2
## 
## Call:
## distsamp(formula = ~1 ~ elev + I(elev^2), data = umf_juvs, keyfun = "exp", 
##     output = "density", unitsOut = "ha")
## 
## Density:
##             Estimate    SE      z P(>|z|)
## (Intercept)  -0.7720 0.297 -2.598 0.00937
## elev          0.0322 0.231  0.139 0.88925
## I(elev^2)    -0.4942 0.229 -2.160 0.03074
## 
## Detection:
##  Estimate    SE    z  P(>|z|)
##      1.41 0.302 4.67 3.02e-06
## 
## AIC: 328.1595
juvs$p.elev2
## 
## Call:
## distsamp(formula = ~veg ~ elev + I(elev^2), data = umf_juvs, 
##     keyfun = "exp", output = "density", unitsOut = "ha")
## 
## Density:
##             Estimate    SE      z P(>|z|)
## (Intercept)   -0.748 0.297 -2.515  0.0119
## elev           0.111 0.239  0.465  0.6419
## I(elev^2)     -0.512 0.231 -2.214  0.0268
## 
## Detection:
##                 Estimate    SE    z  P(>|z|)
## rate(Intercept)    1.229 0.292 4.21 2.54e-05
## ratevegShrubs      0.641 0.519 1.23 2.17e-01
## 
## AIC: 328.0714

Let’s visualize our covariate effects on each iguana group. To do this I’ll make model averaged predictions of density across values of each covariate individually, keeping the other covariates at constant values or getting the average value across factor levels for aspect and vegetation type.

library(plyr)
# 1. ELEVATION
elev.sim <- seq(min(covs$elev), max(covs$elev), length.out = 30)
elev.new <- (elev.sim - mean(covs$elev))/sd(covs$elev)
## predict function for elevation effect
elev.pred.fun <- function(mod.list, group.chat){
  pred = as.data.frame(modavgPred(cand.set = mod.list, type = "response", 
                                  parm.type = "lambda",
                                  newdata = 
                                    data.frame(elev = rep(elev.new, 8),
                                               slope = 0,
                                               aspect = c(rep("N", 60), 
                                                          rep("E", 60), 
                                                          rep("S", 60), 
                                                          rep("W", 60)), 
                                               veg = c(rep(c(rep("Shrubs", 30),
                                                             rep("Herbaceous", 30)), 
                                                           4))), 
                                  c.hat = group.chat)$matrix.output)
  pred$elev <- rep(elev.sim, 8)
  pred = ddply(pred, .(elev), summarize, 
               density.pred = mean(mod.avg.pred),
               se = mean(uncond.se),
               lcl = mean(lower.CL),
               ucl = mean(upper.CL))
  return(pred)
}
elev.pred.males <- elev.pred.fun(machos, c.hat.adults.nb)
elev.pred.females <- elev.pred.fun(hembras, c.hat.adults.nb)
elev.pred.juveniles <- elev.pred.fun(juvs, c.hat.juvs.neg)

# 2. SLOPE
slope.sim <- seq(min(covs$slope), max(covs$slope), length.out = 30)
slope.new <- (slope.sim - mean(covs$slope))/sd(covs$slope)
## predict function for slope effect
slope.pred.fun <- function(mod.list, group.chat){
  pred = as.data.frame(modavgPred(cand.set = mod.list, type = "response", 
                                   parm.type = "lambda",
                                   newdata = 
                                     data.frame(elev = 0, 
                                                slope = rep(slope.new, 8),
                                                aspect = c(rep("N", 60), 
                                                           rep("E", 60), 
                                                           rep("S", 60), 
                                                           rep("W", 60)),
                                                veg = c(rep(c(rep("Shrubs",30),
                                                              rep("Herbaceous",30)), 
                                                            4))), 
                                   c.hat = group.chat)$matrix.output)
  pred$slope <- rep(slope.sim, 8)
  pred = ddply(pred, .(slope), summarize, 
                density.pred = mean(mod.avg.pred), 
                se = mean(uncond.se), 
                lcl = mean(lower.CL), 
                ucl = mean(upper.CL))
  return(pred)
}
slope.pred.males <- slope.pred.fun(machos, c.hat.adults.nb)
slope.pred.females <- slope.pred.fun(hembras, c.hat.adults.nb)
slope.pred.juveniles <- slope.pred.fun(juvs, c.hat.juvs.neg)

# 3. ASPECT
aspect.pred.fun <- function(mod.list, group.chat){
  pred = as.data.frame(modavgPred(cand.set = mod.list, type = "response", 
                                  parm.type = "lambda",
                                  newdata = 
                                    data.frame(elev = 0, 
                                               slope = 0, 
                                               aspect = c(rep("N", 2), 
                                                          rep("E", 2), 
                                                          rep("S", 2), 
                                                          rep("W", 2)), 
                                               veg = c(rep(c("Shrubs",
                                                             "Herbaceous"), 4))), 
                                  c.hat = group.chat)$matrix.output)
  pred$aspect <- c(rep("N", 2), rep("E", 2), rep("S", 2), rep("W", 2))
  pred = ddply(pred, .(aspect), summarize, 
                density.pred = mean(mod.avg.pred), 
                se = mean(uncond.se), 
                lcl = mean(lower.CL), 
                ucl = mean(upper.CL))
  return(pred)
}
aspect.pred.males <- aspect.pred.fun(machos, c.hat.adults.nb)
aspect.pred.females <- aspect.pred.fun(hembras, c.hat.adults.nb)
aspect.pred.juveniles <- aspect.pred.fun(juvs, c.hat.juvs.neg)

# 4. VEGETATION
veg.pred.fun <- function(mod.list, group.chat){
  pred = as.data.frame(modavgPred(cand.set = mod.list, type = "response", 
                                  parm.type = "lambda",
                                  newdata = 
                                    data.frame(elev = 0, 
                                               slope = 0, 
                                               aspect = c(rep(c("N","E",
                                                                "S","W"),2)), 
                                               veg = c(rep("Shrubs",4),
                                                       rep("Herbaceous",4))), 
                                  c.hat = group.chat)$matrix.output)
  pred$veg = c(rep("Shrubs",4),rep("Herbaceous",4))
  pred = ddply(pred, .(veg), summarize, 
               density.pred = mean(mod.avg.pred), 
               se = mean(uncond.se), 
               lcl = mean(lower.CL), 
               ucl = mean(upper.CL))
  return(pred)
}
veg.pred.males <- veg.pred.fun(machos, c.hat.adults.nb)
veg.pred.females <- veg.pred.fun(hembras, c.hat.adults.nb)
veg.pred.juveniles <- veg.pred.fun(juvs, c.hat.juvs.neg)
  
# combine model-averaged covariate predictions by sex
elev.pred <- rbind(elev.pred.males, elev.pred.females, elev.pred.juveniles)
elev.pred$Sex <- c(rep("Males", 30), rep("Females", 30), rep("Juveniles", 30))
elev.pred$Sex <- factor(elev.pred$Sex, 
                        levels = c("Juveniles", "Females", "Males"))

slope.pred <- rbind(slope.pred.males, slope.pred.females, slope.pred.juveniles)
slope.pred$Sex <- c(rep("Males", 30), rep("Females", 30), rep("Juveniles", 30))
slope.pred$Sex <- factor(slope.pred$Sex, 
                         levels = c("Juveniles", "Females", "Males"))

aspect.pred <- rbind(aspect.pred.males, aspect.pred.females, aspect.pred.juveniles)
aspect.pred$Sex <- c(rep("Males", 4), rep("Females", 4), rep("Juveniles", 4))
aspect.pred$Sex <- factor(aspect.pred$Sex, 
                          levels = c("Juveniles", "Females", "Males"))

veg.pred <- rbind(veg.pred.males, veg.pred.females, veg.pred.juveniles)
veg.pred$Sex <- c(rep("Males", 2), rep("Females", 2), rep("Juveniles", 2))
veg.pred$Sex <- factor(veg.pred$Sex, 
                       levels = c("Juveniles", "Females", "Males"))

# PLOTS
elev.plot <- ggplot(elev.pred, aes(x = elev, y = density.pred, col = Sex)) + 
  geom_line(lwd = 1.1) + geom_line(aes(y = lcl), lty = "dashed") + 
  geom_line(aes(y = ucl), lty = "dashed") + 
  labs(x = "Elevation (m)", y = NULL) + ylim(c(0,7)) + 
  theme_classic() + mythemes + 
  scale_color_brewer(palette = "Dark2")

slope.plot <- ggplot(slope.pred, aes(x = slope, y = density.pred, col = Sex)) + 
  geom_line(lwd = 1.1) + geom_line(aes(y = lcl), lty = "dashed") + 
  geom_line(aes(y = ucl), lty = "dashed") + 
  labs(x = "Slope", y = NULL) + ylim(c(0,7)) + 
  theme_classic() + mythemes + 
  scale_color_brewer(palette = "Dark2")

aspect.plot <- ggplot(aspect.pred, aes(x = aspect, y = density.pred, col = Sex)) +
  geom_point(position=position_dodge(0.5)) + 
  geom_errorbar(aes(ymin = lcl, ymax = ucl), width = 0.5, 
                position=position_dodge(0.5)) + 
  labs(x = "Aspect", y = NULL) + ylim(c(0,7)) + 
  theme_classic() + mythemes + 
  scale_color_brewer(palette = "Dark2")

veg.plot <- ggplot(veg.pred, aes(x = veg, y = density.pred, col = Sex)) + 
  geom_point(position=position_dodge(0.5)) + 
  geom_errorbar(aes(ymin = lcl, ymax = ucl), width = 0.25, 
                position=position_dodge(0.5)) + 
  labs(x = "Vegetation", y = NULL) + ylim(c(0,7)) +
  theme_classic() + mythemes + 
  scale_color_brewer(palette = "Dark2")

combined.pred.plots <- ggarrange(elev.plot, slope.plot, 
                                 aspect.plot, veg.plot, nrow = 2, ncol = 2, 
                                 common.legend = TRUE, legend = "bottom",
                                 labels = c("a", "b", "c", "d"),
                                 label.x = c(rep(0.1, 4)))

annotate_figure(combined.pred.plots,
                left = text_grob(expression(Iguanas ~ ha^-1), 
                                 rot = 90, size = 18))

Adult iguanas, particularly males, seem to show a greater affinity for northern and western slopes.

It appears that the elevation effect on juveniles is possibly a statistical artifact of their small sample size. There may be a lower volume of iguanas at low elevations (i.e., near coastal). But we’ll need a larger sample to confirm that effect.

   

Distribution and abundance


Let’s now obtain model-averaged abundance estimates and distribution maps for the iguana population on Santa Fe from the full-island survey in 2011.

First we need to load and stack rasters of the covariates.

library(raster)
library(sp)
library(rgdal)
library(rasterVis)
library(viridis)
# load rasters
elev <- raster("data/elev_z_ha_2")
slope <- raster("data/slope_z_ha_2")
aspect <- raster("data/aspect_ha_2")
veg <- raster("data/veg_ha_2")

# stack rasters
santafe.raster <- stack(elev, slope, aspect, veg)
names(santafe.raster) <- c("elev", "slope", "aspect", "veg")
# note: continuous rasters are on z-scale to match the data in the models
# for aspect: N = 1, E = 2, S = 3, W = 4
# for veg: Shrubs = 1, Herbaceous = 2
plot(santafe.raster)

Now we can make our predictions.

# convert covariate rasters to data frame with each row representing one pixel
raster.covs <- as.data.frame(santafe.raster, xy = TRUE)
raster.covs$ID <- rownames(raster.covs)
# reassign categorical covariates to match what was put into the models
raster.covs$veg <- "Herbaceous"
raster.covs$veg[raster.covs$veg_COUNT == 1610] <- "Shrubs"
raster.covs$aspect <- "E"
raster.covs$aspect[raster.covs$aspect_COUNT == 605] <- "N"
raster.covs$aspect[raster.covs$aspect_COUNT == 809] <- "S"
raster.covs$aspect[raster.covs$aspect_COUNT == 279] <- "W"
newdat <- 
  na.omit(data.frame(elev = raster.covs$elev, 
                     slope = raster.covs$slope, 
                     aspect = as.factor(raster.covs$aspect), 
                     veg = as.factor(raster.covs$veg)))

## males
male.pred <- modavgPred(cand.set = machos, type = "response", 
                        parm.type = "lambda", newdata = newdat, 
                        c.hat = c.hat.adults.nb)
male.pred <- data.frame(ID = rownames(newdat),
                        lambda = male.pred$mod.avg.pred,
                        lcl = male.pred$lower.CL,
                        ucl = male.pred$upper.CL)
# combine predictions with XY data
male.pred <- merge(male.pred, raster.covs, by = "ID", all = TRUE)
male.pred.est <- male.pred[,c(5,6,2)]
male.pred.lower <- male.pred[,c(5,6,3)]
male.pred.upper <- male.pred[,c(5,6,4)]

## females
female.pred <- modavgPred(cand.set = hembras, type = "response", 
                          parm.type = "lambda", newdata = newdat, 
                          c.hat = c.hat.adults.nb)
female.pred <- data.frame(ID = rownames(newdat),
                        lambda = female.pred$mod.avg.pred,
                        lcl = female.pred$lower.CL,
                        ucl = female.pred$upper.CL)
# combine predictions with XY data
female.pred <- merge(female.pred, raster.covs, by = "ID", all = TRUE)
female.pred.est <- female.pred[,c(5,6,2)]
female.pred.lower <- female.pred[,c(5,6,3)]
female.pred.upper <- female.pred[,c(5,6,4)]

## juveniles
juv.pred <- modavgPred(cand.set = juvs, type = "response", 
                          parm.type = "lambda", newdata = newdat, 
                       c.hat = c.hat.juvs.neg)
juv.pred <- data.frame(ID = rownames(newdat),
                        lambda = juv.pred$mod.avg.pred,
                        lcl = juv.pred$lower.CL,
                        ucl = juv.pred$upper.CL)
# combine predictions with XY data
juv.pred <- merge(juv.pred, raster.covs, by = "ID", all = TRUE)
juv.pred.est <- juv.pred[,c(5,6,2)]
juv.pred.lower <- juv.pred[,c(5,6,3)]
juv.pred.upper <- juv.pred[,c(5,6,4)]

## total
## from subgroup estimates
total.pred.sum = data.frame(x = juv.pred.est$x,
                            y = juv.pred.est$y,
                            lambda = 
                              juv.pred.est$lambda + 
                              male.pred.est$lambda +
                              female.pred.est$lambda)
total.pred.sum.lower = data.frame(x = juv.pred.lower$x,
                                  y = juv.pred.lower$y,
                                  lcl = 
                                    juv.pred.lower$lcl + 
                                    male.pred.lower$lcl +
                                    female.pred.lower$lcl)
total.pred.sum.upper = data.frame(x = juv.pred.upper$x,
                                  y = juv.pred.upper$y,
                                  ucl = 
                                    juv.pred.upper$ucl + 
                                    male.pred.upper$ucl +
                                    female.pred.upper$ucl)
## from full dataset models
total.pred <- modavgPred(cand.set = all, type = "response", 
                         parm.type = "lambda", newdata = newdat, 
                         c.hat = c.hat.all.nb)
total.pred <- data.frame(ID = rownames(newdat),
                        lambda = total.pred$mod.avg.pred,
                        lcl = total.pred$lower.CL,
                        ucl = total.pred$upper.CL)
# combine predictions with XY data
total.pred <- merge(total.pred, raster.covs, by = "ID", all = TRUE)
total.pred.est <- total.pred[,c(5,6,2)]
total.pred.lower <- total.pred[,c(5,6,3)]
total.pred.upper <- total.pred[,c(5,6,4)]

# combine predictions into one plot
library(lattice)
library(grid)
library(gridExtra)
library(colorRamps)
library(grDevices)

r1 <- ggplot(juv.pred.est, aes(x = x, y = y)) + 
  geom_tile(aes(fill = lambda)) +
  geom_polygon(inherit.aes = FALSE, data = santafe.shp, 
               color = "black", fill = "transparent", lwd = 1.1, 
               aes(x = long, y = lat)) + 
  scale_fill_gradientn(colors = c("darkgreen", "yellow", "red3"), 
                       na.value = "transparent") +  
  theme_bw() + mythemes +
  labs(x = "\nLongitude", y = "Latitude\n", title = "(a) juveniles") + 
  guides(fill = guide_colorbar(raster = TRUE, 
                               title = expression(Iguanas ~ ha^-1), 
                               title.position = "top")) + coord_equal()

r2 <- ggplot(female.pred.est, aes(x = x, y = y)) + 
  geom_tile(aes(fill = lambda)) + 
  geom_polygon(inherit.aes = FALSE, data = santafe.shp, 
               color = "black", fill = "transparent", lwd = 1.1, 
               aes(x = long, y = lat)) + 
  scale_fill_gradientn(colors = c("darkgreen", "yellow", "red3"), 
                       na.value = "transparent") + 
  theme_bw() + mythemes +
  labs(x = "\nLongitude", y = "Latitude\n", title = "(b) females") + 
  guides(fill = guide_colorbar(raster = TRUE, 
                               title = expression(Iguanas ~ ha^-1), 
                               title.position = "top")) + coord_equal()

r3 <- ggplot(male.pred.est, aes(x = x, y = y)) + 
  geom_tile(aes(fill = lambda)) + 
  geom_polygon(inherit.aes = FALSE, data = santafe.shp, 
               color = "black", fill = "transparent", lwd = 1.1, 
               aes(x = long, y = lat)) + 
  scale_fill_gradientn(colors = c("darkgreen", "yellow", "red3"), 
                       na.value = "transparent") + 
  theme_bw() + mythemes + 
  labs(x = "\nLongitude", y = "Latitude\n", title = "(c) males") + 
  guides(fill = guide_colorbar(raster = TRUE, 
                               title = expression(Iguanas ~ ha^-1), 
                               title.position = "top")) + coord_equal()

r4 <- ggplot(total.pred.sum, aes(x = x, y = y)) + 
  geom_tile(aes(fill = lambda)) + 
  geom_polygon(inherit.aes = FALSE, data = santafe.shp, 
               color = "black", fill = "transparent", lwd = 1.1, 
               aes(x = long, y = lat)) + 
  scale_fill_gradientn(colors = c("darkgreen", "yellow", "red3"), 
                       na.value = "transparent") + 
  theme_bw() + mythemes + 
  labs(x = "\nLongitude", y = "Latitude\n", title = "(d) total") + 
  guides(fill = guide_colorbar(raster = TRUE, 
                               title = expression(Iguanas ~ ha^-1), 
                               title.position = "top")) + coord_equal()

ggarrange(r1, r2, r3, r4, ncol = 2, nrow = 2, common.legend = FALSE)

What is the total estimated population size (with confidence limits) from summing the pixel values of juveniles, females, and males?

juvenile.pop.2011 <- data.frame(abundance = sum(na.omit(juv.pred$lambda)), 
                                lcl = sum(na.omit(juv.pred$lcl)),
                                ucl = sum(na.omit(juv.pred$ucl)))
female.pop.2011 <- data.frame(abundance = sum(na.omit(female.pred$lambda)), 
                                lcl = sum(na.omit(female.pred$lcl)),
                                ucl = sum(na.omit(female.pred$ucl)))
male.pop.2011 <- data.frame(abundance = sum(na.omit(male.pred$lambda)), 
                                lcl = sum(na.omit(male.pred$lcl)),
                                ucl = sum(na.omit(male.pred$ucl)))
# total estimate as sum of separate juvenile and adult estimates
total.pop.2011 <- data.frame(abundance = 
                               juvenile.pop.2011$abundance +
                               female.pop.2011$abundance +
                               male.pop.2011$abundance,
                             lcl = 
                               juvenile.pop.2011$lcl +
                               female.pop.2011$lcl +
                               male.pop.2011$lcl,
                             ucl =
                               juvenile.pop.2011$ucl +
                               female.pop.2011$ucl +
                               male.pop.2011$ucl)

# separate total estimate from the complete dataset
total.pop.2011.sep <- data.frame(abundance = sum(na.omit(total.pred$lambda)), 
                                 lcl = sum(na.omit(total.pred$lcl)),
                                 ucl = sum(na.omit(total.pred$ucl)))

# print the population estimates
iguana.pop.2011 <- rbind(juvenile.pop.2011, female.pop.2011, 
                         male.pop.2011, total.pop.2011)
iguana.pop.2011$type <- c("juveniles", "females", "males", "total")
iguana.pop.2011 <- iguana.pop.2011[,c(4,1,2,3)]
iguana.pop.2011
##        type abundance       lcl       ucl
## 1 juveniles  727.3709  281.4258  2486.768
## 2   females 1794.3660  876.2292  3596.923
## 3     males 2109.0771 1073.7477  4133.852
## 4     total 4630.8140 2231.4027 10217.543
# print the separate total population estimate
total.pop.2011.sep
##   abundance      lcl      ucl
## 1  4109.258 2481.544 6814.215

We can also map the 95% CI bounds for these density estimates.

Here are the lower bounds of the density estimates.

r1 <- ggplot(juv.pred.lower, aes(x = x, y = y)) + 
  geom_tile(aes(fill = lcl)) +
  geom_polygon(inherit.aes = FALSE, 
               data = santafe.shp, color = "black", fill = "transparent", 
               lwd = 1.1, aes(x = long, y = lat)) + 
  scale_fill_gradientn(colors = c("darkgreen", "yellow", "red3"), 
                       na.value = "transparent") +  
  theme_bw() + mythemes +
  labs(x = "\nLongitude", y = "Latitude\n", title = "(a) juveniles") + 
  guides(fill = guide_colorbar(raster = TRUE, 
                               title = expression(Iguanas ~ ha^-1), 
                               title.position = "top")) + 
  coord_equal()

r2 <- ggplot(female.pred.lower, aes(x = x, y = y)) + 
  geom_tile(aes(fill = lcl)) + 
  geom_polygon(inherit.aes = FALSE, 
               data = santafe.shp, color = "black", fill = "transparent", 
               lwd = 1.1, aes(x = long, y = lat)) + 
  scale_fill_gradientn(colors = c("darkgreen", "yellow", "red3"), 
                       na.value = "transparent") + 
  theme_bw() + mythemes +
  labs(x = "\nLongitude", y = "Latitude\n", title = "(b) females") + 
  guides(fill = guide_colorbar(raster = TRUE, 
                               title = expression(Iguanas ~ ha^-1), 
                               title.position = "top")) + 
  coord_equal()

r3 <- ggplot(male.pred.lower, aes(x = x, y = y)) + 
  geom_tile(aes(fill = lcl)) + 
  geom_polygon(inherit.aes = FALSE, 
               data = santafe.shp, color = "black", fill = "transparent", 
               lwd = 1.1, aes(x = long, y = lat)) + 
  scale_fill_gradientn(colors = c("darkgreen", "yellow", "red3"), 
                       na.value = "transparent") + 
  theme_bw() + mythemes + 
  labs(x = "\nLongitude", y = "Latitude\n", title = "(c) males") + 
  guides(fill = guide_colorbar(raster = TRUE, 
                               title = expression(Iguanas ~ ha^-1), 
                               title.position = "top")) + 
  coord_equal()

r4 <- ggplot(total.pred.sum.lower, aes(x = x, y = y)) + 
  geom_tile(aes(fill = lcl)) + 
  geom_polygon(inherit.aes = FALSE, 
               data = santafe.shp, color = "black", fill = "transparent", 
               lwd = 1.1, aes(x = long, y = lat)) + 
  scale_fill_gradientn(colors = c("darkgreen", "yellow", "red3"), 
                       na.value = "transparent") + 
  theme_bw() + mythemes + 
  labs(x = "\nLongitude", y = "Latitude\n", title = "(d) total") + 
  guides(fill = guide_colorbar(raster = TRUE, 
                               title = expression(Iguanas ~ ha^-1), 
                               title.position = "top")) + 
  coord_equal()

ggarrange(r1, r2, r3, r4, ncol = 2, nrow = 2, common.legend = FALSE)

And here are the upper bounds.

r1 <- ggplot(juv.pred.upper, aes(x = x, y = y)) + 
  geom_tile(aes(fill = ucl)) + 
  geom_polygon(inherit.aes = FALSE, 
               data = santafe.shp, color = "black", fill = "transparent", 
               lwd = 1.1, aes(x = long, y = lat)) +
  scale_fill_gradientn(colors = c("darkgreen", "yellow", "red3"), 
                       na.value = "transparent") +  
  theme_bw() + mythemes +
  labs(x = "\nLongitude", y = "Latitude\n", title = "(a) juveniles") + 
  guides(fill = guide_colorbar(raster = TRUE, 
                               title = expression(Iguanas ~ ha^-1), 
                               title.position = "top")) + 
  coord_equal()

r2 <- ggplot(female.pred.upper, aes(x = x, y = y)) + 
  geom_tile(aes(fill = ucl)) + 
  geom_polygon(inherit.aes = FALSE, 
               data = santafe.shp, color = "black", fill = "transparent", 
               lwd = 1.1, aes(x = long, y = lat)) + 
  scale_fill_gradientn(colors = c("darkgreen", "yellow", "red3"), 
                       na.value = "transparent") + 
  theme_bw() + mythemes + 
  labs(x = "\nLongitude", y = "Latitude\n", title = "(b) females") + 
  guides(fill = guide_colorbar(raster = TRUE, 
                               title = expression(Iguanas ~ ha^-1), 
                               title.position = "top")) + 
  coord_equal()

r3 <- ggplot(male.pred.upper, aes(x = x, y = y)) + 
  geom_tile(aes(fill = ucl)) + 
  geom_polygon(inherit.aes = FALSE, 
               data = santafe.shp, color = "black", fill = "transparent", 
               lwd = 1.1, aes(x = long, y = lat)) + 
  scale_fill_gradientn(colors = c("darkgreen", "yellow", "red3"), 
                       na.value = "transparent") + 
  theme_bw() + mythemes +
  labs(x = "\nLongitude", y = "Latitude\n", title = "(c) males") + 
  guides(fill = guide_colorbar(raster = TRUE, 
                               title = expression(Iguanas ~ ha^-1), 
                               title.position = "top")) + 
  coord_equal()

r4 <- ggplot(total.pred.sum.upper, aes(x = x, y = y)) + 
  geom_tile(aes(fill = ucl)) + 
  geom_polygon(inherit.aes = FALSE, 
               data = santafe.shp, color = "black", fill = "transparent", 
               lwd = 1.1, aes(x = long, y = lat)) + 
  scale_fill_gradientn(colors = c("darkgreen", "yellow", "red3"), 
                       na.value = "transparent") + 
  theme_bw() + mythemes + 
  labs(x = "\nLongitude", y = "Latitude\n", title = "(d) total") + 
  guides(fill = guide_colorbar(raster = TRUE, 
                               title = expression(Iguanas ~ ha^-1), 
                               title.position = "top")) + 
  coord_equal()

ggarrange(r1, r2, r3, r4, ncol = 2, nrow = 2, common.legend = FALSE)

Changes from 2011–2020

Now let’s use hierarchical distance sampling models to compare density estimates between years from our iguana transects. We are only using a subset of the original island-wide transects here that are within the center of the island where tortoises were released. These transects (n=28), and the permanent plots in between them, were visited three times, once before and twice after tortoise introduction.

Here is all our data prep code to run the distance sampling models in unmarked. We’re going to stack transects by year to get abundance estimates as a function of time, tortoise density, and other covariates.

# detach plyr to avoid conflicts
detach("package:plyr", unload = TRUE)
### LOAD DISTANCE SAMPLING DATA OF SUBSET OF TRANSECTS ###
library(readxl)
iguanas <- suppressMessages(read_excel("data/iguanas_distsamp_2011_2017_2020.xlsx", 
                                       na = "NA"))
iguanas$transect_yr <- as.factor(paste(iguanas$transect, iguanas$year, sep = "-"))

# make time a continuous covariate and impute mean survey time for missing transects
iguanas$hm <- hour(iguanas$time) + minute(iguanas$time)/60
iguanas$hm[is.na(iguanas$hm)] <- mean(iguanas$hm, na.rm = T)

# get mean times for each transect_yr
transect.times <- iguanas %>%
  group_by(transect_yr) %>%
  summarise(time = mean(hm)) %>%
  ungroup()

# number of visits for each transect
transect.visits <- iguanas %>%
  distinct(transect, year) %>%
  group_by(transect) %>%
  summarise(visits = n()) %>%
  ungroup()

# load transect buffers
iguana.buffs <- readOGR("data/iguana_transects_50m_buff.shp", verbose=FALSE)
iguana.buffs <- spTransform(iguana.buffs, CRS("+init=epsg:32715"))

# get zonal statistics for tortoise densities in iguana transect buffers
buff.2017 <- 
  data.frame(transect = iguana.buffs$transect,
             tden = c(raster::extract(tortoise.brick.adj$Y2017, 
                                      iguana.buffs, fun = mean, na.rm = TRUE)),
             tden2yr = c(raster::extract(mean(tortoise.brick.adj[[1:2]]), 
                                         iguana.buffs, fun = mean, na.rm = TRUE)),
             tden5yr = c(raster::extract(mean(tortoise.brick.adj[[1:2]], 
                                              tortoise.brick.adj[[1:3]]*0), 
                                         iguana.buffs, fun = mean, na.rm = TRUE)),
             year = 2017)
buff.2020 <- 
  data.frame(transect = iguana.buffs$transect,
             tden = c(raster::extract(tortoise.brick.adj$Y2020, 
                                      iguana.buffs, fun = mean, na.rm = TRUE)),
             tden2yr = c(raster::extract(mean(tortoise.brick.adj[[4:5]]), 
                                         iguana.buffs, fun = mean, na.rm = TRUE)),
             tden5yr = c(raster::extract(mean(tortoise.brick.adj[[1:5]]),
                                         iguana.buffs, fun = mean, na.rm = TRUE)), 
             year = 2020)

buff.tden <- rbind(buff.2017, buff.2020)

# subset transects to those surveyed in all three years
iguanas.sub <- iguanas %>%
  filter(transect %in% transect.visits$transect[transect.visits$visits == 3]) %>%
  droplevels() %>%
  as.data.frame()

# summarize total counts of iguanas each year within same subset of transects
iguanas.sub %>%
  filter(!is.na(distance)) %>%
  group_by(year) %>%
  summarise(n_iguanas = n()) %>%
  ungroup()
## # A tibble: 3 x 2
##    year n_iguanas
##   <dbl>     <int>
## 1  2011        35
## 2  2017        59
## 3  2020        73
# identify distance to truncate iguana observations (convert to NAs)
iguanas.sub$quantile <- q.rank(iguanas.sub$distance)
max.dist <- min(iguanas.sub$distance[iguanas.sub$quantile >= 0.975], na.rm = T)

# prepare observations and covariates for unmarked
ydat <- formatDistData(iguanas.sub,
                       distCol="distance",
                       transectNameCol="transect_yr",
                       dist.breaks=seq(0,max.dist,length.out = 6))

### LOAD COVARIATES ###
covs <- read.csv(file = "data/distsamp_covars.csv", 
                 header = TRUE, row.names="transect") 

# subset to transects surveyed in all three years
covs <- covs %>%
  mutate(transect = rownames(.)) %>%
  filter(transect %in% transect.visits$transect[transect.visits$visits == 3]) %>%
  as.data.frame()

# standardize continuous covariates
covs$elev.z <- scale(covs$elev)
covs$slope.z <- scale(covs$slope)

# repeat data frame for each survey year
covs <- rbind(covs, covs, covs)
covs$year <- c(rep(2011, length(unique(covs$transect))), 
               rep(2017, length(unique(covs$transect))), 
               rep(2020, length(unique(covs$transect))))

# add tortoise density and time covariates
covs <- covs %>%
  left_join(buff.tden, by = c("transect", "year")) %>%
  mutate_all(~replace(., is.na(.), 0)) %>%
  mutate(transect_yr = paste(transect, year, sep = "-")) %>%
  filter(transect_yr %in% iguanas$transect_yr) %>%
  left_join(transect.times, by = c("transect_yr")) %>%
  mutate(tden.z = scale(tden),
         tden2yr.z = scale(tden2yr),
         tden5yr.z = scale(tden5yr),
         time.z = scale(time)) %>%
  droplevels() %>%
  as.data.frame() 

ydat.df <- data.frame(ydat) %>%
  mutate(transect_yr = rownames(.)) %>%
  left_join(covs, by = "transect_yr")

umf <- 
  unmarkedFrameDS(y = ydat, 
                  siteCovs = data.frame(time = ydat.df$time.z,
                                        year = as.factor(ydat.df$year),
                                        elev = ydat.df$elev.z,
                                        slope = ydat.df$slope.z,
                                        aspect = ydat.df$aspect,
                                        veg = ydat.df$veg,
                                        tden = ydat.df$tden.z,
                                        tden2yr = ydat.df$tden2yr.z,
                                        tden5yr = ydat.df$tden5yr.z), 
                  dist.breaks=seq(0,max.dist,length.out = 6),
                  unitsIn="m", survey="line", tlength = rep(500, nrow(covs)))

summary(umf)
## unmarkedFrameDS Object
## 
## line-transect survey design
## Distance class cutpoints (m):  0 3 6 9 12 15 
## 
## 84 sites
## Maximum number of distance classes per site: 5 
## Mean number of distance classes per site: 5 
## Sites with at least one detection: 68 
## 
## Tabulation of y observations:
##   0   1   2   3   4   5 
## 306  82  20   8   1   3 
## 
## Site-level covariates:
##       time           year         elev             slope         aspect
##  Min.   :-1.7269   2011:28   Min.   :-1.3893   Min.   :-1.9942   E: 6  
##  1st Qu.:-0.6963   2017:28   1st Qu.:-0.7509   1st Qu.:-0.5595   N:36  
##  Median :-0.1864   2020:28   Median :-0.1790   Median :-0.1439   S:33  
##  Mean   : 0.0000             Mean   : 0.0000   Mean   : 0.0000   W: 9  
##  3rd Qu.: 0.4582             3rd Qu.: 0.7461   3rd Qu.: 0.6308         
##  Max.   : 2.2739             Max.   : 2.3659   Max.   : 2.0069         
##          veg          tden            tden2yr           tden5yr       
##  Herbaceous:81   Min.   :-0.3951   Min.   :-0.3652   Min.   :-0.3005  
##  Shrubs    : 3   1st Qu.:-0.3951   1st Qu.:-0.3652   1st Qu.:-0.3005  
##                  Median :-0.3725   Median :-0.3649   Median :-0.3003  
##                  Mean   : 0.0000   Mean   : 0.0000   Mean   : 0.0000  
##                  3rd Qu.:-0.1687   3rd Qu.:-0.2565   3rd Qu.:-0.2075  
##                  Max.   : 5.0267   Max.   : 5.4047   Max.   : 5.9990

Let’s examine our covariates to see if we have any colinearity in our geographic and new tortoise covariates before running our distance sampling models.

## 
## 
## Variance inflation factors
## 
##             GVIF Df GVIF^(1/2Df)
## aspect  1.705008  3     1.093002
## veg     1.154379  1     1.074420
## elev.z  1.193217  1     1.092345
## slope.z 1.422623  1     1.192738
## year    1.115498  1     1.056171
## tden.z  1.296344  1     1.138571
## 
## 
## Variance inflation factors
## 
##               GVIF Df GVIF^(1/2Df)
## aspect    1.672575  3     1.089509
## veg       1.160633  1     1.077327
## elev.z    1.179107  1     1.085867
## slope.z   1.414742  1     1.189429
## year      1.098115  1     1.047910
## tden5yr.z 1.230408  1     1.109238

The VIF scores indicate that there is no colinearity among our covariates.

Now I’ll create our models. First we want to identify the correct detection function.

# create six base models and compare the global model for three different detection functions 
haz.t <- distsamp(
  ~time+year ~elev+slope+veg+tden5yr+year,
  umf, keyfun="hazard", output="density", unitsOut="ha")

haz.t2 <- distsamp(
  ~time+I(time^2)+year ~elev+slope+veg+tden5yr+year,
  umf, keyfun="hazard", output="density", unitsOut="ha")

hn.t <- distsamp(
  ~time+year ~elev+slope+veg+tden5yr+year,
  umf, keyfun="halfnorm", output="density", unitsOut="ha")

hn.t2 <- distsamp(
  ~time+I(time^2)+year ~elev+slope+veg+tden5yr+year,
  umf, keyfun="halfnorm", output="density", unitsOut="ha")

nexp.t <- distsamp(
  ~time+year ~elev+slope+veg+tden5yr+year,
  umf, keyfun="exp", output="density", unitsOut="ha")

nexp.t2 <- distsamp(
  ~time+I(time^2)+year ~elev+slope+veg+tden5yr+year,
  umf, keyfun="exp", output="density", unitsOut="ha")

aictab(cand.set = list(haz.t, hn.t, nexp.t,
                       haz.t2, hn.t2, nexp.t2),
       modnames = c("hazard", "halfnorm", "negexp",
                    "hazard2", "halfnorm2", "negexp2"))
## 
## Model selection based on AICc:
## 
##            K   AICc Delta_AICc AICcWt Cum.Wt      LL
## negexp    11 580.36       0.00   0.55   0.55 -277.35
## negexp2   12 581.59       1.24   0.30   0.85 -276.60
## hazard    12 583.84       3.48   0.10   0.95 -277.72
## hazard2   13 585.19       4.83   0.05   1.00 -276.99
## halfnorm2 12 592.00      11.64   0.00   1.00 -281.80
## halfnorm  11 592.28      11.92   0.00   1.00 -283.31

We’re going to go with the negative exponential detection function to model iguana density. Let’s run our goodness of fit tests.

set.seed(1)
GoF <- parboot(nexp.t, fitstats, nsim=1000, report=5) ; GoF
## t0 = 185.6701 502.293 103.606
## 
## Call: parboot(object = nexp.t, statistic = fitstats, nsim = 1000, report = 5)
## 
## Parametric Bootstrap Statistics:
##               t0 mean(t0 - t_B) StdDev(t0 - t_B) Pr(t_B > t0)
## SSE          186          27.19            20.19       0.0979
## Chisq        502         101.62            69.73       0.0519
## freemanTukey 104           3.79             7.17       0.2977
## 
## t_B quantiles:
##               0% 2.5% 25% 50% 75% 97.5% 100%
## SSE          105  124 144 157 172   200  236
## Chisq        254  307 360 390 428   559 1087
## freemanTukey  79   85  95 100 105   114  120
## 
## t0 = Original statistic computed from data
## t_B = Vector of bootstrap samples
observed <- data.frame(test = names(GoF@t0),
                       value = GoF@t0) %>% melt(id = "test")
GoF@t.star %>%
  melt() %>%
  dplyr::rename(test = Var2) %>%
  ggplot(aes(x = value)) +
  geom_histogram(col = "white", fill = "grey5", alpha = 0.3) +
  geom_vline(data = observed, aes(xintercept = value), 
             col = "blue", lwd = 0.9) +
  facet_wrap(~test, nrow = 3, scales = "free") + 
  theme_classic() + mythemes +
  labs(x = "Bootstrapped statistic", y = "Frequency")

c.hat <- GoF@t0[2] / mean(GoF@t.star[,2]); c.hat
##    Chisq 
## 1.253623

The global model seems to fit pretty well.

There is very slight overdispersion, so let’s account for that in our model rankings and estimates.

Here is our candidate list of models.

# create candidate models, rank with QAIC
nexp.null <- distsamp(
  ~1 ~1,
  umf, keyfun="exp", output="density", unitsOut="ha")

nexp.year <- distsamp(
  ~time+year ~year,
  umf, keyfun="exp", output="density", unitsOut="ha")

nexp.hab <- distsamp(
  ~time+year ~elev+slope+veg+year,
  umf, keyfun="exp", output="density", unitsOut="ha")

nexp.tden <- distsamp(
  ~time+year ~tden+year,
  umf, keyfun="exp", output="density", unitsOut="ha")

nexp.tden5y <- distsamp(
  ~time+year ~tden5yr+year,
  umf, keyfun="exp", output="density", unitsOut="ha")

nexp.full <- distsamp(
  ~time+year ~elev+slope+veg+tden+year,
  umf, keyfun="exp", output="density", unitsOut="ha")

nexp.full.5y <- distsamp(
  ~time+year ~elev+slope+veg+tden5yr+year,
  umf, keyfun="exp", output="density", unitsOut="ha")

We’ll rank models with the aictab function from the AICcmodavg package.

iguana.rankings <- 
  aictab(cand.set = list(nexp.null, nexp.year, nexp.hab, nexp.tden, 
                         nexp.tden5y, nexp.full, nexp.full.5y), c.hat = c.hat,
         modnames = c("null", "year", "habitat", "tortoises", 
                      "tortoises (5 yr)", "habitat + tortoises", 
                      "habitat + tortoises (5 yr)"))
iguana.rankings
## 
## Model selection based on QAICc:
## (c-hat estimate = 1.253623)
## 
##                             K  QAICc Delta_QAICc QAICcWt Cum.Wt Quasi.LL
## year                        8 462.01        0.00    0.47   0.47  -222.05
## tortoises (5 yr)            9 463.45        1.44    0.23   0.71  -221.51
## tortoises                   9 464.16        2.15    0.16   0.87  -221.86
## null                        3 464.97        2.96    0.11   0.98  -229.34
## habitat                    11 469.07        7.05    0.01   0.99  -221.70
## habitat + tortoises (5 yr) 12 470.86        8.85    0.01   1.00  -221.24
## habitat + tortoises        12 471.57        9.56    0.00   1.00  -221.59
write.csv(iguana.rankings, "data/iguana_model_rankings_stacked.csv")

Interesting. The year model is on top and nothing is within 2 QAICc units, which suggests that iguana population does not vary with our tortoise and/or environmental covariates.

Let’s look at the parameter estimates from that year model.

summary(nexp.year)
## 
## Call:
## distsamp(formula = ~time + year ~ year, data = umf, keyfun = "exp", 
##     output = "density", unitsOut = "ha")
## 
## Density (log-scale):
##             Estimate    SE     z  P(>|z|)
## (Intercept)    1.509 0.256 5.902 3.60e-09
## year2017       0.310 0.323 0.959 3.38e-01
## year2020       0.294 0.315 0.935 3.50e-01
## 
## Detection (log-scale):
##                 Estimate     SE     z  P(>|z|)
## rate(Intercept)   0.9984 0.1943 5.138 2.77e-07
## ratetime          0.0314 0.0654 0.480 6.32e-01
## rateyear2017      0.2372 0.2515 0.943 3.46e-01
## rateyear2020      0.4772 0.2505 1.905 5.68e-02
## 
## AIC: 570.7231 
## Number of sites: 84
## optim convergence code: 0
## optim iterations: 164 
## Bootstrap iterations: 0 
## 
## Survey design: line-transect
## Detection function: exp
## UnitsIn: m
## UnitsOut: ha

It does not appear that iguana density changes significantly over time. Detection rates may be greater in 2020. No hour effect on detection probability.

Out of curiosity, what do the next two models with the tortoise density look like?

nexp.tden5y
## 
## Call:
## distsamp(formula = ~time + year ~ tden5yr + year, data = umf, 
##     keyfun = "exp", output = "density", unitsOut = "ha")
## 
## Density:
##             Estimate     SE     z  P(>|z|)
## (Intercept)   1.4805 0.2571  5.76 8.52e-09
## tden5yr      -0.0959 0.0879 -1.09 2.76e-01
## year2017      0.3236 0.3232  1.00 3.17e-01
## year2020      0.3571 0.3186  1.12 2.62e-01
## 
## Detection:
##                 Estimate     SE     z  P(>|z|)
## rate(Intercept)   1.0017 0.1945 5.152 2.58e-07
## ratetime          0.0469 0.0672 0.698 4.85e-01
## rateyear2017      0.2300 0.2515 0.914 3.61e-01
## rateyear2020      0.4743 0.2505 1.893 5.83e-02
## 
## AIC: 571.3748
nexp.tden
## 
## Call:
## distsamp(formula = ~time + year ~ tden + year, data = umf, keyfun = "exp", 
##     output = "density", unitsOut = "ha")
## 
## Density:
##             Estimate     SE     z  P(>|z|)
## (Intercept)   1.4878 0.2578  5.77 7.86e-09
## tden         -0.0543 0.0822 -0.66 5.09e-01
## year2017      0.3333 0.3247  1.03 3.05e-01
## year2020      0.3316 0.3192  1.04 2.99e-01
## 
## Detection:
##                 Estimate    SE     z  P(>|z|)
## rate(Intercept)   1.0002 0.194 5.146 2.67e-07
## ratetime          0.0405 0.067 0.604 5.46e-01
## rateyear2017      0.2332 0.252 0.927 3.54e-01
## rateyear2020      0.4756 0.250 1.898 5.76e-02
## 
## AIC: 572.2632

Tortoise density has no effect on iguana density.

Let’s use the top model plot out our iguana density estimates for 2011, 2017, and 2020 (and include our tortoise density estimates in the plot as a reference).

library(adehabitatHR)
# get minimal convex polygon of transect coordinates
transect.points <- 
  SpatialPoints(sp::coordinates(subset(iguana.buffs, 
                                       transect %in% iguanas.sub$transect)))

survey.zone <- mcp(transect.points, percent = 100)
writeOGR(obj = survey.zone, dsn = getwd(),  layer = "data/core_survey_zone", 
         driver="ESRI Shapefile", overwrite_layer=TRUE)

# get iguana density predictions from top model
i.lambda <- predict(nexp.year, type = "state", c.hat = c.hat, 
                      newdata = data.frame(year = c("2011", "2017", "2020")))

i.lambda$N_hat = i.lambda$Predicted * survey.zone$area
i.lambda$N_lower = i.lambda$lower * survey.zone$area
i.lambda$N_upper = i.lambda$upper * survey.zone$area
i.lambda$pct_change = (i.lambda$N_hat - i.lambda$N_hat[1])/i.lambda$N_hat[1]
i.lambda$pct_change_lwr = (i.lambda$N_lower - i.lambda$N_lower[1])/i.lambda$N_lower[1]
i.lambda$pct_change_upr = (i.lambda$N_upper - i.lambda$N_upper[1])/i.lambda$N_upper[1] 

i.lambda
##   Predicted       SE    lower    upper    N_hat   N_lower  N_upper pct_change
## 1  4.523015 1.156634 2.740043 7.466186 1539.035  932.3476 2540.501  0.0000000
## 2  6.164160 1.215416 4.188307 9.072130 2097.464 1425.1450 3086.952  0.3628430
## 3  6.069661 1.112135 4.238381 8.692184 2065.309 1442.1836 2957.668  0.3419501
##   pct_change_lwr pct_change_upr
## 1      0.0000000      0.0000000
## 2      0.5285555      0.2150956
## 3      0.5468304      0.1642066
# get mean tortoise density in 2017 and 2020 in survey zone
t.lambda <- 
  data.frame(estimate = c(0, raster::extract(tortoise.brick.adj$Y2017, 
                                             survey.zone, 
                                             fun = mean, na.rm = TRUE),
                          raster::extract(tortoise.brick.adj$Y2020, 
                                          survey.zone, 
                                          fun = mean, na.rm = TRUE)),
             lower = c(0, raster::extract(tortoise.brick.adj.lcl$Y2017, 
                                          survey.zone, 
                                          fun = mean, na.rm = TRUE),
                       raster::extract(tortoise.brick.adj.lcl$Y2020, 
                                       survey.zone, 
                                       fun = mean, na.rm = TRUE)),
             upper = c(0, raster::extract(tortoise.brick.adj.ucl$Y2017, 
                                          survey.zone, 
                                          fun = mean, na.rm = TRUE),
                               raster::extract(tortoise.brick.adj.ucl$Y2020, 
                                               survey.zone,
                                       fun = mean, na.rm = TRUE)))

# combine iguana and tortoise density data frames for plotting together
sf.densities <- data.frame(density = c(i.lambda$Predicted, t.lambda$estimate),
                           lcl = c(i.lambda$lower, t.lambda$lower),
                           ucl = c(i.lambda$upper, t.lambda$upper),
                           Year = c(rep(c("2011", "2017", "2020"),2)),
                           species = c(rep("iguana", 3), rep("tortoise", 3)))

# print density / abundance table
sf.densities
##    density      lcl      ucl Year  species
## 1 4.523015 2.740043 7.466186 2011   iguana
## 2 6.164160 4.188307 9.072130 2017   iguana
## 3 6.069661 4.238381 8.692184 2020   iguana
## 4 0.000000 0.000000 0.000000 2011 tortoise
## 5 1.046474 0.976587 1.135559 2017 tortoise
## 6 1.294435 1.148891 1.474581 2020 tortoise
# plot
distsamp.plot <-
  ggplot(sf.densities, aes(Year, density, color = species)) + 
  geom_pointrange(aes(ymin = lcl, ymax = ucl)) +
  geom_vline(aes(xintercept = 1.71), col = "grey50", 
             lty = "dashed", lwd = 1.1) +
  geom_hline(aes(yintercept = 0), lty = "dashed") +
  geom_pointrange(aes(ymin = lcl, ymax = ucl)) +
  theme_classic() + mythemes + 
  labs(x = "Year", y = "Density (per ha)") + ylim(0,10) +
  annotate("text", x = 3.2, y = sf.densities$density[3], 
           label = "iguanas", col = col2[1], size = 4) +
  annotate("text", x = 3.2, y = sf.densities$density[6], 
           label = "tortoises", col = col2[2], size = 4) +
  scale_color_manual(values = col2) + theme(legend.position = "none")

distsamp.plot

The population may increased slightly from 2011 to 2020 (~ 529 [421–512] individuals or 34% [17–55%]), but there is a lot of uncertainty around those estimates so there is no strong evidence to support any iguana change over time or tortoise impact on iguana distribution or abundance. This could change as tortoises get larger and begin reproducing, thus having a more sustained impact on the environment in Santa Fe. Future monitoring will be essential to verify any impacts on the iguana population.

Let’s ask the same question about iguana population change using the repeated plot counts from 2011 and 2020.

Plot data

# load data
plots2011 <- 
  suppressMessages(read_excel("data/iguana_plots_2011_2017_2020.xlsx", 
                              na = "NA", sheet = "2011")) %>% arrange(Punto)
plots2017 <- 
  suppressMessages(read_excel("data/iguana_plots_2011_2017_2020.xlsx", 
                              na = "NA", sheet = "2017")) %>% arrange(Punto)
plots2020 <- 
  suppressMessages(read_excel("data/iguana_plots_2011_2017_2020.xlsx", 
                              na = "NA", sheet = "2020")) %>% arrange(Punto)

Plots were also measured in 2017, but iguana data from at least 10 plots from the core zone were lost and unrecoverable. So we will focus on the two years, 2011 (before) and 2020 (after) which we have complete data for.

# filter the 2011 data to include only those plots that were surveyed in 2020
plots2011 <- plots2011 %>%
  filter(Punto %in% plots2020$Punto)

# combine the 2011 and 2020 data
iguana_plots <- 
  data.frame(Plot = plots2011$Punto, 
             Lat = plots2011$Latitud, Lon = plots2011$Longitud,
             ITM2011 = plots2011$ITM, ITH2011 = plots2011$ITH, 
             ITJ2011 = plots2011$ITJ, ITT2011 = plots2011$ITT, 
             ITM2020 = plots2020$ITM, ITH2020 = plots2020$ITH, 
             ITJ2020 = plots2020$ITJ, ITT2020 = plots2020$ITT,
             TG2011 = 0, TG2020 = plots2020$TGH+plots2020$TGM+plots2020$TGJ,
             HI2011 = plots2011$HI, HI2020 = plots2020$HI,
             CA2011 = plots2011$CA, CS2011 = plots2011$CS, 
             CJ2011 = plots2011$CJ, CT2011 = plots2011$CT,
             CA2020 = plots2020$CA, CS2020 = plots2020$CS, 
             CJ2020 = plots2020$CJ, CT2020 = plots2020$CT)

Wilcoxin tests

First let’s use a Wilcoxin test to compare iguana and iguana fecal density in plots between 2011 and 2020.

# male iguanas
pop.diff.m <- wilcox.test(iguana_plots$ITM2011, iguana_plots$ITM2020, 
                          paired = TRUE); pop.diff.m
## 
##  Wilcoxon signed rank test with continuity correction
## 
## data:  iguana_plots$ITM2011 and iguana_plots$ITM2020
## V = 49, p-value = 0.8217
## alternative hypothesis: true location shift is not equal to 0
# female iguanas
pop.diff.f <- wilcox.test(iguana_plots$ITH2011, iguana_plots$ITH2020, 
                          paired = TRUE); pop.diff.f
## 
##  Wilcoxon signed rank test with continuity correction
## 
## data:  iguana_plots$ITH2011 and iguana_plots$ITH2020
## V = 16, p-value = 0.8211
## alternative hypothesis: true location shift is not equal to 0
# total iguanas
pop.diff.t <- wilcox.test(iguana_plots$ITT2011, iguana_plots$ITT2020, 
                          paired = TRUE); pop.diff.t
## 
##  Wilcoxon signed rank test with continuity correction
## 
## data:  iguana_plots$ITT2011 and iguana_plots$ITT2020
## V = 131, p-value = 0.3243
## alternative hypothesis: true location shift is not equal to 0
# fecal denstiy
fec.diff <- wilcox.test(iguana_plots$HI2011, iguana_plots$HI2020, 
                        paired = TRUE); fec.diff
## 
##  Wilcoxon signed rank test with continuity correction
## 
## data:  iguana_plots$HI2011 and iguana_plots$HI2020
## V = 20, p-value = 4.513e-08
## alternative hypothesis: true location shift is not equal to 0

According to these tests, there are no differences in iguana density before and after tortoise introductions. But there are a lot of plots with no differences between years, and those measurements are ignored in the significance test. There is a difference in iguana feces (more in 2020), but that may simply be due to human measurement error (including confusion with juvenile tortoise feces).

Let’s also look at the same comparisons with Wilcoxin tests for cactus plot counts.

# juvenile cactus
pop.diff.cj <- wilcox.test(iguana_plots$CJ2011, iguana_plots$CJ2020, 
                           paired = TRUE); pop.diff.cj
## 
##  Wilcoxon signed rank test with continuity correction
## 
## data:  iguana_plots$CJ2011 and iguana_plots$CJ2020
## V = 21.5, p-value = 3.923e-07
## alternative hypothesis: true location shift is not equal to 0
# subadult cactus
pop.diff.cs <- wilcox.test(iguana_plots$CS2011, iguana_plots$CS2020, 
                           paired = TRUE); pop.diff.cs
## 
##  Wilcoxon signed rank test with continuity correction
## 
## data:  iguana_plots$CS2011 and iguana_plots$CS2020
## V = 68, p-value = 1.832e-05
## alternative hypothesis: true location shift is not equal to 0
# adult cactus
pop.diff.ca <- wilcox.test(iguana_plots$CA2011, iguana_plots$CA2020, 
                           paired = TRUE); pop.diff.ca
## 
##  Wilcoxon signed rank test with continuity correction
## 
## data:  iguana_plots$CA2011 and iguana_plots$CA2020
## V = 492.5, p-value = 0.03346
## alternative hypothesis: true location shift is not equal to 0
# total cactus
pop.diff.ct <- wilcox.test(iguana_plots$CT2011, iguana_plots$CT2020, 
                           paired = TRUE); pop.diff.ct
## 
##  Wilcoxon signed rank test with continuity correction
## 
## data:  iguana_plots$CT2011 and iguana_plots$CT2020
## V = 184, p-value = 0.0008327
## alternative hypothesis: true location shift is not equal to 0
library(broom)
library(tidyr)
iguana_plots %>%
  dplyr::select(Plot, CJ2011, CJ2020, CS2011, CS2020, 
                CA2011, CA2020, CT2011, CT2020) %>%
  pivot_longer(-Plot, names_to = "CountStage", values_to = "Count") %>%
  mutate(Year = ifelse(CountStage %in% c("CJ2011", "CS2011", "CA2011", "CT2011"), 
                       "2011", "2020"),
         Stage = case_when(CountStage %in% c("CJ2011", "CJ2020") ~ "Juvenile",
                           CountStage %in% c("CS2011", "CS2020") ~ "Subadult",
                           CountStage %in% c("CA2011", "CA2020") ~ "Adult",
                           CountStage %in% c("CT2011", "CT2020") ~ "Total"),
         Label = case_when(Stage %in% "Juvenile" ~ "a",
                           Stage %in% "Subadult" ~ "b",
                           Stage %in% "Adult" ~ "c",
                           Stage %in% "Total" ~ "d"),
         Stage = factor(Stage, levels = c("Juvenile", "Subadult", "Adult", "Total")),
         p_value = case_when(CountStage %in% c("CJ2011", "CJ2020") ~ 
                               pop.diff.cj$p.value,
                             CountStage %in% c("CS2011", "CS2020") ~ 
                               pop.diff.cs$p.value,
                             CountStage %in% c("CA2011", "CA2020") ~ 
                               pop.diff.ca$p.value,
                             CountStage %in% c("CT2011", "CT2020") ~ 
                               pop.diff.ct$p.value)) %>%
  group_by(Stage) %>%
  mutate(label.y = max(Count)) %>% ungroup() %>%
  ggpaired(x = "Year", y = "Count", id = "Plot", 
           color = "Year", line.color = alpha("grey", 0.2),
           line.size = 0.4, palette = "jco") +
  # wilcox paired test
  stat_compare_means(paired = TRUE, label.x = 1.2, size = 3) +
  geom_text(aes(x = 0.5,  y = label.y, label = Label, size = 4)) +
  facet_wrap(~Stage, nrow = 2, scales = "free") + 
  theme_classic() + mythemes +
  labs(x = "Year", y = "Cactus per plot") +
  theme(legend.position = "none") -> cactus.wilcox.plot

cactus.wilcox.plot

At all stages, we see changes in cactus density. There is a very weak change in adult cactus.

Let’s just tabulate a summary of cactus density in our plots before and after tortoise reintroduction.

t(
    sapply(iguana_plots[,16:23], function(...) 
      list(means = mean(..., na.rm = T)/((pi*25^2)/10000), 
           se = (sd(..., na.rm = T)/sqrt(43))/((pi*25^2)/10000)))
  )
##        means    se      
## CA2011 56.85163 6.152795
## CS2011 9.830594 1.65535 
## CJ2011 12.19941 1.940855
## CT2011 78.88163 7.432893
## CA2020 45.71818 4.382008
## CS2020 24.39882 3.345125
## CJ2020 36.00603 4.936571
## CT2020 106.123  7.770257

Iguana count GLMM

We’ll mixed models to compare iguana plot counts of iguanas and cactus in 2011 and 2020 with the lme4 package. This will help us understand the direction of these trends for cactus.

Let’s connect our tortoise density raster to the iguana plot data. I’ll create a shapefile from the plot points, and summarize the recent (5yr average) tortoise density surrounding those points (50m buffer).

# create shapefile for plots
iguana_plots_shp <- iguana_plots
coordinates(object = iguana_plots_shp) <- ~ Lon + Lat
proj4string(iguana_plots_shp) <- CRS("+proj=longlat +datum=WGS84")
iguana_plots_shp <- spTransform(iguana_plots_shp, 
                                CRSobj = CRS("+init=epsg:32715"))

# create buffer for plots
library(rgeos)
plot_buffers <- gBuffer(iguana_plots_shp, byid = TRUE, width = 50, 
                        capStyle="ROUND")

# get zonal statistics for tortoise densities in iguana plot buffers
iguana_plots$tden <- c(raster::extract(tortoise.brick.adj[[6]], 
                                       plot_buffers,
                                       fun = mean, na.rm = TRUE))
iguana_plots$tden5y <- c(raster::extract(mean(tortoise.brick.adj[[1:5]]), 
                                         plot_buffers,
                                         fun = mean, na.rm = TRUE))

# divide tortoise density values into "high" and "low" density treatments
iguana_plots$tdencat <- 
  as.factor(ifelse(iguana_plots$tden5y < quantile(iguana_plots$tden5y, 0.5), 
                   "low", "high"))

library(reshape2)
# melt iguana data
iguana.melt <- iguana_plots %>%
  dplyr::select(c(Plot, ITM2011, ITM2020, ITH2011, ITH2020, 
                  ITJ2011, ITJ2020, ITT2011, ITT2020, tden5y, tdencat)) %>%
  melt(id = c("Plot", "tden5y", "tdencat"))

# melt cactus data
cactus.melt.juv <- iguana_plots %>%
  dplyr::select(c(Plot, CJ2011, CJ2020)) %>%
  melt(id = c("Plot")) %>%
  mutate(CJ = value,
         year = as.factor(ifelse(variable %in% "CJ2011", "2011", "2020"))) %>%
  dplyr::select(c(Plot, year, CJ))

cactus.melt.sub <- iguana_plots %>%
  dplyr::select(c(Plot, CS2011, CS2020)) %>%
  melt(id = c("Plot")) %>%
  mutate(CS = value,
         year = as.factor(ifelse(variable %in% "CS2011", "2011", "2020"))) %>%
  dplyr::select(c(Plot, year, CS))

cactus.melt.adu <- iguana_plots %>%
  dplyr::select(c(Plot, CA2011, CA2020)) %>%
  melt(id = c("Plot")) %>%
  mutate(CA = value,
         year = as.factor(ifelse(variable %in% "CA2011", "2011", "2020"))) %>%
  dplyr::select(c(Plot, year, CA))

cactus.melt.tot <- iguana_plots %>%
  dplyr::select(c(Plot, CT2011, CT2020)) %>%
  melt(id = c("Plot")) %>%
  mutate(CT = value,
         year = as.factor(ifelse(variable %in% "CT2011", "2011", "2020"))) %>%
  dplyr::select(c(Plot, year, CT))

# create data frame of iguana and cactus plot counts for GLMMs
iguana.total <- iguana.melt %>%
  filter(variable %in% "ITT2011" | variable %in% "ITT2020") %>%
  mutate(year = as.factor(ifelse(variable %in% "ITT2011", "2011", "2020"))) %>%
  left_join(cactus.melt.juv, by = c("Plot", "year")) %>%
  left_join(cactus.melt.sub, by = c("Plot", "year")) %>%
  left_join(cactus.melt.adu, by = c("Plot", "year")) %>%
  left_join(cactus.melt.tot, by = c("Plot", "year")) %>%
  mutate(status = as.factor(ifelse(value > 0, 1, 0)),
         iguanas = value)

Now let’s build our GLMM and plot out the time * tortoise contrast.

library(lme4)
library(lmerTest)
library(DHARMa)
library(ggeffects)

iguana.total$tdencat <- factor(iguana.total$tdencat, levels = c("low", "high"))

# models
## null
iguana.null <-glmer(iguanas ~ 1 + (1|Plot), 
                  family = poisson, data = iguana.total)
## time
iguana.year <-glmer(iguanas ~ year + (1|Plot), 
                  family = poisson, data = iguana.total)
## tortoise
iguana.yearXtort <- glmer(iguanas ~ year * tdencat + (1|Plot), 
                    family = poisson, data = iguana.total)

# compare null to fitted models with Likelihood ratio test
library(lmtest)
lrtest(iguana.null, iguana.year, iguana.yearXtort)
## Likelihood ratio test
## 
## Model 1: iguanas ~ 1 + (1 | Plot)
## Model 2: iguanas ~ year + (1 | Plot)
## Model 3: iguanas ~ year * tdencat + (1 | Plot)
##   #Df  LogLik Df  Chisq Pr(>Chisq)  
## 1   2 -83.615                       
## 2   3 -83.068  1 1.0933    0.29574  
## 3   5 -78.957  2 8.2223    0.01639 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# inspect model residuals
simulationOutput <- simulateResiduals(fittedModel = iguana.yearXtort)
plot(simulationOutput)

summary(iguana.yearXtort) 
## Generalized linear mixed model fit by maximum likelihood (Laplace
##   Approximation) [glmerMod]
##  Family: poisson  ( log )
## Formula: iguanas ~ year * tdencat + (1 | Plot)
##    Data: iguana.total
## 
##      AIC      BIC   logLik deviance df.resid 
##    167.9    180.2    -79.0    157.9       81 
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -0.8855 -0.6031 -0.4302  0.7720  3.1303 
## 
## Random effects:
##  Groups Name        Variance Std.Dev.
##  Plot   (Intercept) 0.2714   0.521   
## Number of obs: 86, groups:  Plot, 43
## 
## Fixed effects:
##                      Estimate Std. Error z value Pr(>|z|)   
## (Intercept)           -1.5664     0.4802  -3.262  0.00111 **
## year2020               0.3365     0.5855   0.575  0.56556   
## tdencathigh            1.3862     0.5252   2.639  0.00831 **
## year2020:tdencathigh  -0.8961     0.6883  -1.302  0.19299   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Correlation of Fixed Effects:
##             (Intr) yr2020 tdncth
## year2020    -0.711              
## tdencathigh -0.853  0.650       
## yr2020:tdnc  0.605 -0.851 -0.685
# get predictions from fitted model
## iguana count predictions over tortoise and time contrast
ggpredict(iguana.yearXtort, terms = c("year", "tdencat"), 
          type = "fe", ci.lvl = 0.95)  %>%
  mutate(predicted = predicted / ((pi*25^2)/100^2),
         conf.low = conf.low / ((pi*25^2)/100^2),
         conf.high = conf.high / ((pi*25^2)/100^2)) -> iguana.pred

# plot iguana density predictions
quadrant.plot <-
  ggplot(iguana.pred, aes(x = x, y = predicted, group = group, fill = group)) +
  geom_col(stat = "identity", position = position_dodge(0.5), width = 0.4) + 
  geom_errorbar(aes(ymin = conf.low, ymax = conf.high), 
                position = position_dodge(0.5), width = 0) +
  scale_fill_manual(values = c("grey50", "grey15"), name = "Tortoise density") +
  theme_classic() + mythemes + labs(x = "Year", y = "Iguana density (per ha)") +
  theme(legend.position = c(.8,.8), legend.title = element_text(size = 13), 
        legend.text = element_text(size = 12))

quadrant.plot

This model from the plot data tells that the total iguana population has not changed much from 2011 to present. Overall, the plots suggest a slight decline in the tortoise release zone after repatriation (in contrast to the distance sampling data). The distribution of iguanas may have shifted, with tortoises displacing some iguanas to other areas that were less occupied before. But the interaction between tortoise density and time was very weak.

Cactus count GLMMs

Let’s finally look at how cactus densities have changed over time with tortoises using the same model structure. Starting with juvenile cactus.

# models
## null
cactus.null <-glmer(CJ ~ 1 + (1|Plot), 
                  family = poisson, data = iguana.total)
## time
cactus.year <-glmer(CJ ~ year + (1|Plot), 
                  family = poisson, data = iguana.total)
## time x tortoise
cactus.yearXtort <- glmer(CJ ~ year * tdencat + (1|Plot), 
                    family = poisson, data = iguana.total)

# compare null to fitted with Likelihood ratio test
lrtest(cactus.null, cactus.year, cactus.yearXtort)
## Likelihood ratio test
## 
## Model 1: CJ ~ 1 + (1 | Plot)
## Model 2: CJ ~ year + (1 | Plot)
## Model 3: CJ ~ year * tdencat + (1 | Plot)
##   #Df  LogLik Df    Chisq Pr(>Chisq)    
## 1   2 -262.34                           
## 2   3 -210.46  1 103.7549    < 2e-16 ***
## 3   5 -207.36  2   6.2053    0.04493 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# inspect model residuals
simulationOutput <- simulateResiduals(fittedModel = cactus.yearXtort)
plot(simulationOutput)

summary(cactus.yearXtort) 
## Generalized linear mixed model fit by maximum likelihood (Laplace
##   Approximation) [glmerMod]
##  Family: poisson  ( log )
## Formula: CJ ~ year * tdencat + (1 | Plot)
##    Data: iguana.total
## 
##      AIC      BIC   logLik deviance df.resid 
##    424.7    437.0   -207.4    414.7       81 
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -1.6150 -0.7514 -0.1252  0.3131  3.0284 
## 
## Random effects:
##  Groups Name        Variance Std.Dev.
##  Plot   (Intercept) 0.3343   0.5782  
## Number of obs: 86, groups:  Plot, 43
## 
## Fixed effects:
##                      Estimate Std. Error z value Pr(>|z|)    
## (Intercept)            0.3002     0.2136   1.405   0.1600    
## year2020               1.3573     0.1868   7.266 3.71e-13 ***
## tdencathigh            0.6766     0.2749   2.461   0.0138 *  
## year2020:tdencathigh  -0.4528     0.2346  -1.931   0.0535 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Correlation of Fixed Effects:
##             (Intr) yr2020 tdncth
## year2020    -0.696              
## tdencathigh -0.770  0.540       
## yr2020:tdnc  0.554 -0.796 -0.653
# get predictions from fitted model
## iguana count predictions over tortoise and time contrast
ggpredict(cactus.yearXtort, terms = c("year", "tdencat"), 
          type = "fe", ci.lvl = 0.95)  %>%
  mutate(predicted = predicted / ((pi*25^2)/100^2),
         conf.low = conf.low / ((pi*25^2)/100^2),
         conf.high = conf.high / ((pi*25^2)/100^2)) -> cactus.pred


cactus.pred <- ggpredict(cactus.yearXtort, terms = c("year", "tdencat"), 
                         type = "fe", ci.lvl = 0.95) %>%
  mutate(predicted = predicted / ((pi*25^2)/100^2),
         conf.low = conf.low / ((pi*25^2)/100^2),
         conf.high = conf.high / ((pi*25^2)/100^2))

# plot iguana density predictions
quadrant.cj.plot <-
  ggplot(cactus.pred, aes(x = x, y = predicted, group = group, fill = group)) +
  geom_col(stat = "identity", position = position_dodge(0.5), width = 0.4) + 
  geom_errorbar(aes(ymin = conf.low, ymax = conf.high), 
                position = position_dodge(0.5), width = 0) +
  scale_fill_manual(values = c("grey50", "grey15"), name = "Tortoise density") +
  theme_classic() + mythemes +
  labs(x = "Year", y = expression(Juveniles ~ ha^-1)) +
  theme(legend.position = "top", legend.title = element_text(size = 13), 
        legend.text = element_text(size = 12))

quadrant.cj.plot

Juvenile cactus counts have increased—almost tripled—before and after tortoise introduction. There is also a positive effect of tortoise density on juvenile cactus. Worth noticing that the high density tortoise areas seemed to have more cactus before there were any tortoise, which may just reflect the similar habitat selection strategies of iguanas at these different sites.

What about subadult cactus?

# models
## null
cactus.null <-glmer(CS ~ 1 + (1|Plot), 
                  family = poisson, data = iguana.total)
## time
cactus.year <-glmer(CS ~ year + (1|Plot), 
                  family = poisson, data = iguana.total)
## time x tortoise
cactus.yearXtort <- glmer(CS ~ year * tdencat + (1|Plot), 
                    family = poisson, data = iguana.total)

# compare null to fitted with Likelihood ratio test
lrtest(cactus.null, cactus.year, cactus.yearXtort)
## Likelihood ratio test
## 
## Model 1: CS ~ 1 + (1 | Plot)
## Model 2: CS ~ year + (1 | Plot)
## Model 3: CS ~ year * tdencat + (1 | Plot)
##   #Df  LogLik Df   Chisq Pr(>Chisq)    
## 1   2 -218.93                          
## 2   3 -191.90  1 54.0570  1.948e-13 ***
## 3   5 -188.43  2  6.9392    0.03113 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# inspect model residuals
simulationOutput <- simulateResiduals(fittedModel = cactus.yearXtort)
plot(simulationOutput)

summary(cactus.yearXtort) 
## Generalized linear mixed model fit by maximum likelihood (Laplace
##   Approximation) [glmerMod]
##  Family: poisson  ( log )
## Formula: CS ~ year * tdencat + (1 | Plot)
##    Data: iguana.total
## 
##      AIC      BIC   logLik deviance df.resid 
##    386.9    399.1   -188.4    376.9       81 
## 
## Scaled residuals: 
##      Min       1Q   Median       3Q      Max 
## -1.54624 -0.87081 -0.05151  0.48314  2.42293 
## 
## Random effects:
##  Groups Name        Variance Std.Dev.
##  Plot   (Intercept) 0.3443   0.5867  
## Number of obs: 86, groups:  Plot, 43
## 
## Fixed effects:
##                      Estimate Std. Error z value Pr(>|z|)    
## (Intercept)            0.2369     0.2237   1.059 0.289669    
## year2020               0.7577     0.2170   3.491 0.000482 ***
## tdencathigh            0.4353     0.2917   1.492 0.135670    
## year2020:tdencathigh   0.2279     0.2689   0.848 0.396715    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Correlation of Fixed Effects:
##             (Intr) yr2020 tdncth
## year2020    -0.661              
## tdencathigh -0.754  0.507       
## yr2020:tdnc  0.533 -0.807 -0.643
# get predictions from fitted model
## iguana count predictions over tortoise and time contrast
cactus.pred <- ggpredict(cactus.yearXtort, terms = c("year", "tdencat"), 
                         type = "fe", ci.lvl = 0.95)%>%
  mutate(predicted = predicted / ((pi*25^2)/100^2),
         conf.low = conf.low / ((pi*25^2)/100^2),
         conf.high = conf.high / ((pi*25^2)/100^2)) 

# plot iguana density predictions
quadrant.cs.plot <-
  ggplot(cactus.pred, aes(x = x, y = predicted, group = group, fill = group)) +
  geom_col(stat = "identity", position = position_dodge(0.5), width = 0.4) + 
  geom_errorbar(aes(ymin = conf.low, ymax = conf.high), 
                position = position_dodge(0.5), width = 0) +
  scale_fill_manual(values = c("grey50", "grey15"), name = "Tortoise density") +
  theme_classic() + mythemes + 
  labs(x = "Year", y = expression(Subadults ~ ha^-1)) +
  theme(legend.position = "top", legend.title = element_text(size = 13), 
        legend.text = element_text(size = 12))

quadrant.cs.plot

Again we see an increase in subadult cactus. The effect here is weaker than for juveniles. No effect of tortoise density here.

What about adult cactus? We shouldn’t see a noticeable change here.

# models
## null
cactus.null <-glmer(CA ~ 1 + (1|Plot), 
                  family = poisson, data = iguana.total)
## time
cactus.year <-glmer(CA ~ year + (1|Plot), 
                  family = poisson, data = iguana.total)
## time x tortoise
cactus.yearXtort <- glmer(CA ~ year * tdencat + (1|Plot), 
                    family = poisson, data = iguana.total)

# compare null to fitted with Likelihood ratio test
lrtest(cactus.null, cactus.year, cactus.yearXtort)
## Likelihood ratio test
## 
## Model 1: CA ~ 1 + (1 | Plot)
## Model 2: CA ~ year + (1 | Plot)
## Model 3: CA ~ year * tdencat + (1 | Plot)
##   #Df  LogLik Df   Chisq Pr(>Chisq)   
## 1   2 -271.67                         
## 2   3 -266.56  1 10.2234   0.001387 **
## 3   5 -266.26  2  0.5873   0.745536   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# inspect model residuals
simulationOutput <- simulateResiduals(fittedModel = cactus.yearXtort)
plot(simulationOutput)

summary(cactus.yearXtort) 
## Generalized linear mixed model fit by maximum likelihood (Laplace
##   Approximation) [glmerMod]
##  Family: poisson  ( log )
## Formula: CA ~ year * tdencat + (1 | Plot)
##    Data: iguana.total
## 
##      AIC      BIC   logLik deviance df.resid 
##    542.5    554.8   -266.3    532.5       81 
## 
## Scaled residuals: 
##      Min       1Q   Median       3Q      Max 
## -1.83013 -0.69705 -0.05213  0.56000  2.02722 
## 
## Random effects:
##  Groups Name        Variance Std.Dev.
##  Plot   (Intercept) 0.4205   0.6485  
## Number of obs: 86, groups:  Plot, 43
## 
## Fixed effects:
##                      Estimate Std. Error z value Pr(>|z|)    
## (Intercept)           2.30790    0.15830  14.579   <2e-16 ***
## year2020             -0.22884    0.09170  -2.496   0.0126 *  
## tdencathigh          -0.17118    0.22149  -0.773   0.4396    
## year2020:tdencathigh  0.02405    0.13605   0.177   0.8597    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Correlation of Fixed Effects:
##             (Intr) yr2020 tdncth
## year2020    -0.257              
## tdencathigh -0.709  0.183       
## yr2020:tdnc  0.173 -0.674 -0.274
# get predictions from fitted model
## iguana count predictions over tortoise and time contrast
cactus.pred <- ggpredict(cactus.yearXtort, terms = c("year", "tdencat"), 
                         type = "fe", ci.lvl = 0.95) %>%
  mutate(predicted = predicted / ((pi*25^2)/100^2),
         conf.low = conf.low / ((pi*25^2)/100^2),
         conf.high = conf.high / ((pi*25^2)/100^2))

# plot iguana density predictions
quadrant.ca.plot <-
  ggplot(cactus.pred, aes(x = x, y = predicted, group = group, fill = group)) +
  geom_col(stat = "identity", position = position_dodge(0.5), width = 0.4) + 
  geom_errorbar(aes(ymin = conf.low, ymax = conf.high), 
                position = position_dodge(0.5), width = 0) +
  scale_fill_manual(values = c("grey50", "grey15"), name = "Tortoise density") +
  theme_classic() + mythemes + 
  labs(x = "Year", y = expression(Adults ~ ha^-1)) +
  theme(legend.position = "top", legend.title = element_text(size = 13), 
        legend.text = element_text(size = 12))

quadrant.ca.plot

There is a slight decline in adult cactus counts from 2011 to 2020.

Let’s look at total cactus change.

# models
## null
cactus.null <-glmer(CT ~ 1 + (1|Plot), 
                  family = poisson, data = iguana.total)
## year
cactus.year <- glmer(CT ~ year + (1|Plot), 
                    family = poisson, data = iguana.total)
## fitted
cactus.yearXtort <- glmer(CT ~ year * tdencat + (1|Plot), 
                    family = poisson, data = iguana.total)

# compare null to fitted with Likelihood ratio test
lrtest(cactus.null, cactus.year, cactus.yearXtort)
## Likelihood ratio test
## 
## Model 1: CT ~ 1 + (1 | Plot)
## Model 2: CT ~ year + (1 | Plot)
## Model 3: CT ~ year * tdencat + (1 | Plot)
##   #Df  LogLik Df   Chisq Pr(>Chisq)    
## 1   2 -337.61                          
## 2   3 -320.61  1 33.9903  5.539e-09 ***
## 3   5 -319.56  2  2.0975     0.3504    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# inspect model residuals
simulationOutput <- simulateResiduals(fittedModel = cactus.yearXtort)
plot(simulationOutput)

summary(cactus.yearXtort) 
## Generalized linear mixed model fit by maximum likelihood (Laplace
##   Approximation) [glmerMod]
##  Family: poisson  ( log )
## Formula: CT ~ year * tdencat + (1 | Plot)
##    Data: iguana.total
## 
##      AIC      BIC   logLik deviance df.resid 
##    649.1    661.4   -319.6    639.1       81 
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -3.5096 -0.8189 -0.0740  0.6368  3.5074 
## 
## Random effects:
##  Groups Name        Variance Std.Dev.
##  Plot   (Intercept) 0.2443   0.4942  
## Number of obs: 86, groups:  Plot, 43
## 
## Fixed effects:
##                      Estimate Std. Error z value Pr(>|z|)    
## (Intercept)           2.65127    0.12219  21.698  < 2e-16 ***
## year2020              0.22010    0.07361   2.990  0.00279 ** 
## tdencathigh          -0.04210    0.17088  -0.246  0.80538    
## year2020:tdencathigh  0.14603    0.10194   1.432  0.15201    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Correlation of Fixed Effects:
##             (Intr) yr2020 tdncth
## year2020    -0.334              
## tdencathigh -0.712  0.239       
## yr2020:tdnc  0.241 -0.722 -0.341
# get predictions from fitted model
## iguana count predictions over tortoise and time contrast
cactus.pred <- ggpredict(cactus.yearXtort, terms = c("year", "tdencat"), 
                         type = "fe", ci.lvl = 0.95) %>%
  mutate(predicted = predicted / ((pi*25^2)/100^2),
         conf.low = conf.low / ((pi*25^2)/100^2),
         conf.high = conf.high / ((pi*25^2)/100^2))

# plot iguana density predictions
quadrant.ct.plot <-
  ggplot(cactus.pred, aes(x = x, y = predicted, group = group, fill = group)) +
  geom_col(stat = "identity", position = position_dodge(0.5), width = 0.4) + 
  geom_errorbar(aes(ymin = conf.low, ymax = conf.high), 
                position = position_dodge(0.5), width = 0) +
  scale_fill_manual(values = c("grey50", "grey15"), 
                    name = "Tortoise density") +
  theme_classic() + mythemes + labs(x = "Year", y = expression(Total ~ ha^-1)) +
  theme(legend.position = "top", legend.title = element_text(size = 13), 
        legend.text = element_text(size = 12))

quadrant.ct.plot

Overall, we see an increase in cactus in the tortoise release zone on Santa Fe between 2011 and 2020. The overall change is independent of tortoise density variation, but as we saw before that variable is informative for certain cactus stages.

Let’s pull all these cactus figures together.

ggarrange(quadrant.cj.plot, quadrant.cs.plot, 
          quadrant.ca.plot, quadrant.ct.plot,
          nrow = 2, ncol = 2, labels = c("a", "b", "c", "d"), align = "hv",
          label.x = c(0.19, 0.19, 0.19, 0.19), common.legend = TRUE)

It may also be helpful to visualize changes in proportions of different age classes of cactus from 2011 to 2020.

iguana.class.tab <-
  data.frame(year = rep(iguana.total$year, 3),
             iguana = c(iguana.total$CJ, iguana.total$CS, iguana.total$CA),
             type = c(rep("Juvenile", nrow(iguana.total)), 
                      rep("Subadult", nrow(iguana.total)),
                      rep("Adult", nrow(iguana.total))),
             total = rep(iguana.total$CT, 3))

iguana.class.tab %>%
  mutate(prop = iguana / total,
         type = factor(type, levels = c("Adult", "Subadult", "Juvenile"))) %>%
  group_by(type, year) %>%
  summarise(mean_prop = mean(prop),
            se_prop = sd(prop)/sqrt(n())) %>%
  ungroup() -> iguana.class.props 

cactus.prop.plot <-
  ggplot(iguana.class.props, aes(x = year, fill = type)) +
  geom_bar(aes(y = mean_prop), stat = "identity") +
  geom_text(aes(label = round(mean_prop,2), y = mean_prop), 
            position = position_stack(vjust = 0.5), size = 4) +
  scale_fill_manual(values = col2[c(2:4)], name = "Stage") +
  labs(x = "Year", y = "Proportion of cactus") + 
  theme_classic() + mythemes 

cactus.prop.plot

Future monitoring, especially a repeat of the full-island iguana survey, will be essential for describing iguana and cactus demographic change with the growing tortoise population.

   

Session info


sessionInfo()
## R version 4.0.2 (2020-06-22)
## Platform: x86_64-w64-mingw32/x64 (64-bit)
## Running under: Windows 10 x64 (build 18362)
## 
## Matrix products: default
## 
## locale:
## [1] LC_COLLATE=English_United States.1252 
## [2] LC_CTYPE=English_United States.1252   
## [3] LC_MONETARY=English_United States.1252
## [4] LC_NUMERIC=C                          
## [5] LC_TIME=English_United States.1252    
## 
## attached base packages:
## [1] grid      stats     graphics  grDevices utils     datasets  methods  
## [8] base     
## 
## other attached packages:
##  [1] lmtest_0.9-37       zoo_1.8-8           ggeffects_0.15.1   
##  [4] DHARMa_0.3.2.0      lmerTest_3.1-2      lme4_1.1-23        
##  [7] Matrix_1.2-18       rgeos_0.5-3         broom_0.7.0        
## [10] adehabitatHR_0.4.18 adehabitatLT_0.3.25 CircStats_0.2-6    
## [13] boot_1.3-25         MASS_7.3-51.6       adehabitatMA_0.3.14
## [16] ade4_1.7-15         deldir_0.1-28       colorRamps_2.3     
## [19] gridExtra_2.3       viridis_0.5.1       viridisLite_0.3.0  
## [22] AICcmodavg_2.3-0    unmarked_1.0.1      ggridges_0.5.2     
## [25] rasterVis_0.48      latticeExtra_0.6-29 lattice_0.20-41    
## [28] spatstat_1.64-1     rpart_4.1-15        spatstat.data_1.4-3
## [31] ggsn_0.5.0          maptools_1.0-1      sf_0.9-5           
## [34] rgdal_1.5-15        raster_3.3-13       sp_1.4-2           
## [37] popbio_2.7          cowplot_1.0.0       kableExtra_1.1.0   
## [40] reshape2_1.4.4      ggpubr_0.4.0        tidymv_3.0.0       
## [43] readxl_1.3.1        forcats_0.5.0       stringr_1.4.0      
## [46] dplyr_1.0.1         purrr_0.3.4         readr_1.3.1        
## [49] tidyr_1.1.1         tibble_3.0.3        tidyverse_1.3.0    
## [52] lubridate_1.7.9     lisa_0.1.1          ggExtra_0.9        
## [55] ggthemes_4.2.0      mgcv_1.8-31         nlme_3.1-148       
## [58] ggalt_0.4.0         ggplot2_3.3.2       RMark_2.2.7        
## [61] knitr_1.29         
## 
## loaded via a namespace (and not attached):
##   [1] utf8_1.1.4            tidyselect_1.1.0      htmlwidgets_1.5.1    
##   [4] munsell_0.5.0         codetools_0.2-16      units_0.6-7          
##   [7] statmod_1.4.34        miniUI_0.1.1.1        withr_2.2.0          
##  [10] colorspace_1.4-1      highr_0.8             rstudioapi_0.11      
##  [13] stats4_4.0.2          ggsignif_0.6.0        tensor_1.5           
##  [16] Rttf2pt1_1.3.8        labeling_0.3          RgoogleMaps_1.4.5.3  
##  [19] polyclip_1.10-0       farver_2.0.3          coda_0.19-3          
##  [22] vctrs_0.3.2           generics_0.0.2        xfun_0.16            
##  [25] R6_2.4.1              VGAM_1.1-3            bitops_1.0-6         
##  [28] spatstat.utils_1.17-0 assertthat_0.2.1      promises_1.1.1       
##  [31] scales_1.1.1          nnet_7.3-14           gtable_0.3.0         
##  [34] ash_1.0-15            goftest_1.2-2         rlang_0.4.7          
##  [37] splines_4.0.2         rstatix_0.6.0         extrafontdb_1.0      
##  [40] acepack_1.4.1         hexbin_1.28.1         checkmate_2.0.0      
##  [43] yaml_2.2.1            abind_1.4-5           modelr_0.1.8         
##  [46] backports_1.1.8       httpuv_1.5.4          Hmisc_4.4-0          
##  [49] extrafont_0.17        tools_4.0.2           ellipsis_0.3.1       
##  [52] RColorBrewer_1.1-2    Rcpp_1.0.5            plyr_1.8.6           
##  [55] base64enc_0.1-3       classInt_0.4-3        ggmap_3.0.0          
##  [58] haven_2.3.1           cluster_2.1.0         fs_1.5.0             
##  [61] magrittr_1.5          data.table_1.13.0     openxlsx_4.1.5       
##  [64] reprex_0.3.0          mvtnorm_1.1-1         matrixcalc_1.0-3     
##  [67] hms_0.5.3             mime_0.9              evaluate_0.14        
##  [70] xtable_1.8-4          rio_0.5.16            jpeg_0.1-8.1         
##  [73] compiler_4.0.2        maps_3.3.0            KernSmooth_2.23-17   
##  [76] crayon_1.3.4          minqa_1.2.4           htmltools_0.5.0      
##  [79] later_1.1.0.1         Formula_1.2-3         expm_0.999-5         
##  [82] DBI_1.1.0             sjlabelled_1.1.6      dbplyr_1.4.4         
##  [85] proj4_1.0-10          car_3.0-8             cli_2.0.2            
##  [88] insight_0.9.0         parallel_4.0.2        pkgconfig_2.0.3      
##  [91] numDeriv_2016.8-1.1   foreign_0.8-80        foreach_1.5.0        
##  [94] xml2_1.3.2            webshot_0.5.2         rvest_0.3.6          
##  [97] snakecase_0.11.0      digest_0.6.25         msm_1.6.8            
## [100] rmarkdown_2.3         cellranger_1.1.0      htmlTable_2.0.1      
## [103] gap_1.2.2             curl_4.3              shiny_1.5.0          
## [106] nloptr_1.2.2.2        rjson_0.2.20          lifecycle_0.2.0      
## [109] jsonlite_1.7.0        carData_3.0-4         fansi_0.4.1          
## [112] pillar_1.4.6          ggsci_2.9             fastmap_1.0.1        
## [115] httr_1.4.2            survival_3.1-12       glue_1.4.1           
## [118] zip_2.0.4             iterators_1.0.12      png_0.1-7            
## [121] class_7.3-17          stringi_1.4.6         blob_1.2.1           
## [124] e1071_1.7-3